Лучшая структура базы данных (mysql) для этого случая: - PullRequest
0 голосов
/ 08 апреля 2010

у нас есть три типа данных (таблицы):

  • Книга (идентификатор, имя, автор ...) (около 3 миллионов строк)
  • Категория (идентификатор, имя) (около 2000 строк)
  • Местоположение (идентификатор, имя) (около 10000 строк)

Книга должна иметь как минимум 1 тип категории (до 3), а у книги должно быть только одно местоположение.

Мне нужно сопоставить эти данные, чтобы получить этот запрос быстрее:

Выберите Книги, где Категория = 'cat_id' И Местоположение = 'loc_id'

Выберите Книги, в которых (имя) соответствует ('название книги') И Местоположение = 'loc_id'

Пожалуйста, мне нужна помощь. Спасибо

Ответы [ 2 ]

1 голос
/ 08 апреля 2010

Иметь другую таблицу, скажем, bookscategories, в которой в качестве полей указаны id, bookid, categoryid.

Используйте это для отображения книг по категориям.

На ваши исходные запросы это не повлияет, поскольку первый запрос требует книги в ОДНОЙ определенной категории и местоположении, а второй запрос требует книги, которые соответствуют названию и ОДНОМУ местоположению.

0 голосов
/ 08 апреля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...