Общие > Базы данных
Задачка не для слабых ....
fidget:
--- Цитировать ---Подобные данные должны лежать в одной таблице.
--- Конец цитаты ---
угу, в 99% так всегда и делается
хотя было пару случаев, когда мы насильно разделяли на таблицы по 2м причинам:
1. запросов по всем категориям почти не было, основная часть по отдельной категории.
2. Данные очень часто обновлялись и т.к. MyISAM таблицы поддерживают только table locking - это доставляло определенного рода неудобства :(
Хотя после того как перевели базу на InnoDB все данные объединили в одну таблицу и насколько я знаю так оно и работает.
но это был частный случай :)
fidget:
listopad
а что касается того как данные по таблица распихивать, то Ромик уже правильно сказал, что база вначале _проектируется_
и есть еще очень хорошая штука - нормализация
[OFF]к сожалению значительная часть людей, которые базами знанимаются теории реляционных баз данных не знают совершенно :([/OFF]
Alexandr:
--- Цитировать ---Только дикарь, который вообще не представляет себе, как обращаться с базой данных, способен на ТАКОЕ:
Цитата:
ALTER TABLE DROP id
...
INSERT .....
ALTER TABLE ADD id mediumint NOT NULL auto_increment UNSIGNED
--- Конец цитаты ---
Нууу.... Эт ты погорячился. Базу буду наполнять почти вручную, следовательно путь вполне приемлемый.
[off]
--- Цитировать ---А Alexandr - новичок. Достаточно почитать его ответы в соседних ветках.
--- Конец цитаты ---
Вот уж кто бы говорил. Согласен, что знаю не все, но достаточно сообразителен и обучаем. :-)
[/off]
--- Цитировать ---Подобные данные должны лежать в одной таблице.
угу, в 99% так всегда и делается
--- Конец цитаты ---
Я просто реально столкнулся с этой проблемой:
http://www.autodealer.ru/db_part.php
Раньше была 1 таблица и в ней type_id.
Когда данных увеличилось с 20000 до 250000.
То наступила ошибка max_connections, т.к.
Напр. запрос
SELECT count(*) FROM part WHERE type_id=1;(~249000)
SELECT count(*) FROM part WHERE type_id=2;(~1000)
SELECT count(*) FROM part WHERE type_id=3;(~50)
выполнялся около 1мин.
а про поиск лучше не вспоминать вообще.
Однако после разнесения по 3-м таблицам скорость возросла в десятки раз.
Поэтому и говорю.
Всем пасибо.
Alexandr:
И ещё. В базах данных нет одного верного, идеального решения на ВСЕ проблемы, всегда бывают отступления от общих правил.
Меняздесьдавнонет:
Гы!
индекс по полю type_id строить не пробовали?
считать не count(*),а count(id) не пробовали?
Еще раз повторю - проблемы скорости и проблемы разделения таблиц - РАЗНЫЕ.
Навигация
Перейти к полной версии