|
|
|
Несколько вопросов по индексам
|
|||
|---|---|---|---|
|
#18+
Добрый день, подскажите, пожалуйста, при индексы, как правильнее сделать 1) Есть запрос Код: sql 1. Чтобы он быстрее работал, я создала составной индекс (A, B, C, D) Есть еще один запрос, который использует еще и дополнительные поля: Код: sql 1. Заметила, что в этом случае быстрее работает, если проиндексировать каждое поле отдельно. Можно ли тогда использовать два вида индексов, чтобы mysql сам выбирал, как ему удобнее искать, то есть Key_name Seq_in_ind Column_name -----------+----------+------------- PRIMARY | 1 | id custom | 1 | A custom | 2 | B custom | 3 | C custom | 4 | D A_ind | 1 | A B_ind | 1 | B C_ind | 1 | C D_ind | 1 | D 2) Есть запрос: Код: sql 1. Вот его explain +----+-------------+---------+-------+---------------+------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+---------+-------+---------------+------+---------+------+------+-------------+ | 1 | SIMPLE | changes | index | NULL | А | 103 | NULL | 33 | Using where | +----+-------------+---------+-------+---------------+------+---------+------+------+-------------+ Насколько я понимаю, индекс он использует, но при этом время обработки у него почти три минуты. Можно ли как-то убыстрить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 11:01:24 |
|
||
|
Несколько вопросов по индексам
|
|||
|---|---|---|---|
|
#18+
не по теме кнопка CSV, в тэге прописать [СSV=|]таблица...[/CSV] where A like '%test%' - вынуждает перебор всех строк таблицы (индекса под этот фильтр не существует) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 11:10:19 |
|
||
|
Несколько вопросов по индексам
|
|||
|---|---|---|---|
|
#18+
Aliaraбыстрее работает, если проиндексировать каждое поле отдельно. Можно ли тогда использовать два вида индексов, чтобы mysql сам выбирал, как ему удобнее искатьДумаю, что ускорение работы при использовании индекса по одному полю - кажущееся. Либо оно связано с особенностями наполнения таблицы данными (как вариант - например, свежий индекс меньше фрагментирован). Впрочем, создавать несколько индексов, предоставляя право серверу выбрать, какой использовать - нормальная практика. Если правильно учитывать, что наличие нескольких индексов замедляет операции изменения набора данных - т.е. необходимо искать разумный баланс. AliaraЕсть запрос: Код: sql 1. Вот его explain +----+-------------+---------+-------+---------------+------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+---------+-------+---------------+------+---------+------+------+-------------+ | 1 | SIMPLE | changes | index | NULL | А | 103 | NULL | 33 | Using where | +----+-------------+---------+-------+---------------+------+---------+------+------+-------------+ Насколько я понимаю, индекс он использует, но при этом время обработки у него почти три минуты.Не совсем так. Индекс НЕ используется именно как индекс. Он используется как компактная версия таблицы - т.е. имеем полное сканирование, но не всей таблицы, а индекса. Ускорить запрос можно только полнотекстом или внешним движком поиска (скажем, сфинксом). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 11:26:27 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=127&tid=1832796]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 313ms |

| 0 / 0 |
