Общие > Базы данных
Индексы таблицы
Tryapkonator:
Есть таблица новостей. Записей примерно 10 000, в день прибовляется порядка 30-50 записей. Неправильно индексил таблицу и сейчас сижу правлю, сталкнулся с проблемкой. Есть 2 независимых поля, дата (date, тип данных DATE) и латинское имя (lname, тип данных VARCHAR) новости (для ЧПУ). Так же есть куча смежных таблиц типа рейтинга и комментариев, которые соеденяются с таблицей новостей по ключу lname. Новости отображаются за конкретное число. Внимание вопрос =)))
Какой индекс правильнее кластеризовать? С одной стороны Кластеризация даты (индекс будет разряженым) поможет отображать список новостей на странице, но с другой стороны если кластеризовать латинское имя, это позволит более быстро соединять новость с комментами и рейтингом при отображении конкретной новости. Вот сижу и думаю, вообще я больше скланяюсь к первичной индексации даты, но вдруг я не прав =) Может кто сталкивался или есть какие мысли по этому поводу.
Меняздесьдавнонет:
а что мешает попробовать?
sarutobi:
Хмм... Если я правильно помню теорию БД то кластеризуют только Primary Key, одно из обязательных свойств которого - уникальность для любой строки таблицы. Date под это определение подходит с натягом, т.к есть ненулевая вероятность совпадения дат.
В твоем случае я бы попробовал создать сложный индекс date+lname.
Tryapkonator:
Да, намудрил, теорию я плохо помню =( если делать составной индекс по ключам date+lname, то точечные запросы по lname будут выполняться достаточно медленно. Ладно, попробую воспользоваться драгоценным советом RomikChef`а, через пару дней скину стату сюда...
commander:
sarutobi
--- Цитировать ---Если я правильно помню теорию БД
--- Конец цитаты ---
не правильно помнишь!
Tryapkonator
индекс вешать на date
Навигация
Перейти к полной версии