
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
04.05.2015, 17:11:06
|
|||
|---|---|---|---|
|
|||
Как расставить индексы в MySQL с различными сортировками? |
|||
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Всего записей 20 млн. Выборка по `man_id` вернёт около 3000-4000 тысяч записей Выборка по `man_id` + `man_where` оставит уже 2000-3000 тысячи записей Выборка по `man_id` + `man_where` + `man_group` оставит уже в одном разделе 1990-2990, в другом 10 записей. (то есть по полю `man_group` отсеиваются всего 10 записей). Запросы: Код: sql 1. 2. 3. Без составного индекса по полю сортировки во временной таблице будет сортироваться около 1000-2000 записей. Как верно в данном случае составить индекс/индексы? Я вот думаю: 1) Только лишь составной по `man_id` + `man_where` + `man_group` 2) Сделать 3 составных индекса по полям: `man_id` + `man_where` + `man_group` + `id` `man_id` + `man_where` + `man_group` + `girl_id` `man_id` + `man_where` + `man_group` + `man_saw` 3) Сделать 1 составной и несколько простых с надеждой, что мускул сам объединит индексы и правильно всё сделает: `man_id` + `man_where` + `man_group` `id` `girl_id` `man_saw` ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.05.2015, 18:20:19
|
|||
|---|---|---|---|
Как расставить индексы в MySQL с различными сортировками? |
|||
|
#18+
inpost3000-4000 тысячЭто сколько? 3-4 миллиона? И куда потерялся первичный ключ в таблице? Я бы попробовал первый и второй второй варианты. Возможно, первый вариант индекса поможет и с сортировкой (если я правильно понял, что первичный ключ - это поле id). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.05.2015, 18:26:19
|
|||
|---|---|---|---|
|
|||
Как расставить индексы в MySQL с различными сортировками? |
|||
|
#18+
Извиняюсь за косяк, там имелось ввиду 3000-4000, без тысяч. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.05.2015, 18:27:23
|
|||
|---|---|---|---|
|
|||
Как расставить индексы в MySQL с различными сортировками? |
|||
|
#18+
"(если я правильно понял, что первичный ключ - это поле id)." Да, все верно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.05.2015, 18:31:35
|
|||
|---|---|---|---|
Как расставить индексы в MySQL с различными сортировками? |
|||
|
#18+
inpostИзвиняюсь за косяк, там имелось ввиду 3000-4000, без тысяч.Тогда, возможно, индекс по `man_id` окажется достаточно эффективным, чтобы не создавать остальные индексы. Зависит от требований к быстродействию и доли запросов модификации данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.05.2015, 09:33:11
|
|||
|---|---|---|---|
Как расставить индексы в MySQL с различными сортировками? |
|||
|
#18+
inpost, у тебя во всех запросах не более 5 тыщ записей под сортировку, это немного, и индексами это оптимизировать не стоит. оптимизируй выборки. потом еще посмотрю на твои запросы.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.05.2015, 10:23:01
|
|||
|---|---|---|---|
Как расставить индексы в MySQL с различными сортировками? |
|||
|
#18+
Селективность индекса по man_id достаточно высока, чтобы он один обеспечивал оптимальность выполнения. Селективность по остальным полям отбора с учётом отбора по man_id составляет плюс-минус половину, и нет смысла включать в индекс ещё и их. Равно как и поля сортировки. Точно так же не имеет смысла создавать покрывающие индексы - минимальный профит от их использования заведомо сожрётся накладными расхордами на модификацию данных. Сортировка же нескольких тысяч записей, да чисто по одному полю - это операция, оптимизировать которую не имеет смысла, она достаточно быстрая даже по сравнению с получением выводных полей с диска для выдачи. Тем более что она явно предусматривает интерактивную выдачу результата запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.05.2015, 10:47:00
|
|||
|---|---|---|---|
Как расставить индексы в MySQL с различными сортировками? |
|||
|
#18+
чего-то я не понял. 3-4 тысячи записей в таблице -- тогда вообще никакие индексы не нужны, пока таблица не вырастит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.05.2015, 10:52:47
|
|||
|---|---|---|---|
Как расставить индексы в MySQL с различными сортировками? |
|||
|
#18+
MasterZivчего-то я не понял. 3-4 тысячи записей в таблице -- тогда вообще никакие индексы не нужны, пока таблица не вырастит.inpostВсего записей 20 млн. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1833245]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 309ms |

| 0 / 0 |
