что быстрее, база данных mysql с одной таблицей или несколькими таблицами?

На моем сайте вы можете искать "объявления" или "объявления". Есть разные категории.

Будет ли поиск быстрее с несколькими таблицами, по одной для каждой категории, или это не имеет значения?

Речь идет о около 500 тысяч объявлений.

Если это не замедлит поиск, объясните, пожалуйста, чтобы я поняла, почему это не произойдет, потому что кажется здравым смыслом, что чем больше у вас рекламы, тем медленнее поиск!

Спасибо

10.11.2009 20:23:45
4 ОТВЕТА
РЕШЕНИЕ

Ваш вопрос немного неясен. Я предполагаю этот сценарий:

table: ads
id category ad_text
-- -------- ---------------------------
1  pets     sample text
2  family   sample ad

Если вы делаете один поиск объявлений, то поиск по нескольким таблицам в каждом поиске выполняется медленнее, чем поиск по одной таблице.

ОДНАКО, если вы предлагаете разбить «объявления» на несколько таблиц в соответствии с «категорией», оставляя вас с такими именами таблиц, как

  • Домашние животные объявления
  • семья-объявления
  • программист-объявление

И, с программной точки зрения, вы знаете, что ищете объявления для программистов, поэтому вы можете просто искать в таблице объявлений для программистов, а затем разбивать их быстрее. Не прошло.

Однако их устранение имеет много недостатков. Вам понадобиться:

  • какой-то милый код, чтобы узнать, какую таблицу искать.
  • новая таблица каждый раз, когда вы создаете новую категорию
  • переименовать таблицу, если вы решили, что название категории неверно

Учитывая имеющуюся у нас ограниченную информацию, я бы настоятельно рекомендовал одну таблицу со столбцом категории, а затем перенести ее в свою собственную таблицу. Ударить индекс по этому столбцу. Базы данных созданы для правильной организации множества строк данных, так что не беспокойтесь об этом.

7
10.11.2009 20:32:42
+1 Это действительно имеет смысл по сравнению с принятым ответом :) хе-хе
Andomar 10.11.2009 20:34:33

Это зависит.

Если вы построили одну денормализованную таблицу, содержащую текст, она будет постепенно замедляться по ряду причин. Индексы помогают до определенного момента.

Если у вас есть нормализованная структура с несколькими таблицами, первичными и внешними ключами, индексами и т. Д., Она может быть более надежной и масштабируемой.

1
10.11.2009 20:26:28

База данных очень хорошо оборудована для работы с 500 тыс. Добавлений. Добавьте индекс по категории, и у вас все будет хорошо.

Если вы добавите определение таблицы и распределение категорий к вашему вопросу, вы, вероятно, получите лучший ответ :)

0
10.11.2009 20:27:11

Очевидно, что номинально быстрее будет искать таблицу меньшего размера (одну категорию), чем таблицу большего размера. Однако таблица большего размера, вероятно, все еще правильная. Создание нескольких идентичных таблиц просто сделает жизнь разработчика и менеджера несчастной. Кроме того, определенный вид поиска становится более сложным, если вы сегментируете данные (например, поиск по двум категориям).

Правильно проиндексированный подход с использованием единой таблицы даст результаты почти такие же хорошие, как и сегментированный подход, при этом обеспечивая преимущества правильного проектирования.

(Конечно, когда вы говорите «одна таблица», я предполагаю, что вы подразумеваете одну таблицу, в которой хранятся основные атрибуты сущностей рекламы. Предположительно, будут и другие таблицы.)

2
10.11.2009 20:33:24