[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по индексам БД
GET
Здравствуйте, сейчас тестирую таблицу в которой применяется и очень удобен составной индекс по 5 столбцам(1,2,3,4,5). Вопрос наверное заурядный как кто борется с разрывающими запросами в таких случаях? Т.е. например запрос типа 3,5 или 1,4, а не 1,2,3



Спустя 14 минут, 56 секунд (6.05.2012 - 15:40) Placido написал(а):
Путем создания соответствующего индекса.

Спустя 59 минут, 16 секунд (6.05.2012 - 16:39) GET написал(а):
Placido

Цитата
Путем создания соответствующего индекса.



В смысле ты одиночные индексы создаешь или и составные и одиночные? Что значит эта глубокая фраза?

Спустя 53 минуты, 48 секунд (6.05.2012 - 17:33) Placido написал(а):
Цитата (A.B.C. @ 6.05.2012 - 17:39)
Что значит эта глубокая фраза?

Это сарказм?
Цитата (A.B.C. @ 6.05.2012 - 17:39)
В смысле ты одиночные индексы создаешь или и составные и одиночные?

Если по сути, то создаешь те индексы и столько, сколько необходимо. Если есть необходимость ускорить запрос по полям 3,5 или 1,4, а не 1,2,3, то нужно создать отдельные индексы по этим полям - (3,5) и (1,4), если кроме этого есть выборка по полю 3 или 4, то смысла в отдельном индексе нет - хватит составного, в котором эти поля на первой позиции ((3,4) и (1,4)). С составными будет выборка быстрее, но не нужно забывать, что чем больше индексов и чем они длиннее, тем медленнее будут работать инсерты (т.к. при этом индексы пересчитываются), к тому же индексы могут занимать существенный объем дискового пространства. Потом прогоняешь свои запросы через EXPLAIN, и те индексы, которые не используются, удаляешь. Если по простому, то как-то так.

Спустя 15 минут, 18 секунд (6.05.2012 - 17:48) GET написал(а):
Placido

Да нет не сарказм...smile.gif

Спасибо...

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

Спустя 19 минут, 56 секунд (6.05.2012 - 18:08) FatCat написал(а):
Цитата (A.B.C. @ 6.05.2012 - 19:48)
прихожу к мнению что придется отказаться от одного составного в пользу пяти одиночных

Одобрямс. С действительно большими таблицами лучше не делать составных индексов.
Вот мой "слон":

user posted image

Спустя 10 минут, 5 секунд (6.05.2012 - 18:18) GET написал(а):
спасибо smile.gif

Спустя 1 час, 56 минут, 53 секунды (6.05.2012 - 20:15) vital написал(а):
FatCat
А почему не стоит сделать несколько составных, и, например, насильно указывать mysql-у через FORCE INDEX какой индекс юзать?


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.