Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Несколько вопросов по индексам / 3 сообщений из 3, страница 1 из 1
21.08.2015, 11:01:24
    #39033739
Aliara
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов по индексам
Добрый день, подскажите, пожалуйста, при индексы, как правильнее сделать

1) Есть запрос
Код: sql
1.
SELECT A, B, C, D,  COUNT(*)  FROM table GROUP BY A, B, C, D HAVING COUNT(*)>1;


Чтобы он быстрее работал, я создала составной индекс (A, B, C, D)

Есть еще один запрос, который использует еще и дополнительные поля:
Код: sql
1.
select id, A, B, WWW, C, D ,YYY  from table order by A;



Заметила, что в этом случае быстрее работает, если проиндексировать каждое поле отдельно.
Можно ли тогда использовать два вида индексов, чтобы 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.
select id, A, B, WWW, C, D ,YYY  from table where A like  '%test%'  order by A Limit 0, 33;


Вот его explain
+----+-------------+---------+-------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+---------+-------+---------------+------+---------+------+------+-------------+
| 1 | SIMPLE | changes | index | NULL | А | 103 | NULL | 33 | Using where |
+----+-------------+---------+-------+---------------+------+---------+------+------+-------------+
Насколько я понимаю, индекс он использует, но при этом время обработки у него почти три минуты.
Можно ли как-то убыстрить?
...
Рейтинг: 0 / 0
21.08.2015, 11:10:19
    #39033754
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов по индексам
не по теме
кнопка CSV, в тэге прописать [СSV=|]таблица...[/CSV]

where A like '%test%' - вынуждает перебор всех строк таблицы (индекса под этот фильтр не существует)
...
Рейтинг: 0 / 0
21.08.2015, 11:26:27
    #39033783
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов по индексам
Aliaraбыстрее работает, если проиндексировать каждое поле отдельно.
Можно ли тогда использовать два вида индексов, чтобы mysql сам выбирал, как ему удобнее искатьДумаю, что ускорение работы при использовании индекса по одному полю - кажущееся. Либо оно связано с особенностями наполнения таблицы данными (как вариант - например, свежий индекс меньше фрагментирован).
Впрочем, создавать несколько индексов, предоставляя право серверу выбрать, какой использовать - нормальная практика. Если правильно учитывать, что наличие нескольких индексов замедляет операции изменения набора данных - т.е. необходимо искать разумный баланс.

AliaraЕсть запрос:
Код: sql
1.
select id, A, B, WWW, C, D ,YYY  from table where A like  '%test%'  order by A Limit 0, 33;


Вот его explain
+----+-------------+---------+-------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+---------+-------+---------------+------+---------+------+------+-------------+
| 1 | SIMPLE | changes | index | NULL | А | 103 | NULL | 33 | Using where |
+----+-------------+---------+-------+---------------+------+---------+------+------+-------------+
Насколько я понимаю, индекс он использует, но при этом время обработки у него почти три минуты.Не совсем так. Индекс НЕ используется именно как индекс. Он используется как компактная версия таблицы - т.е. имеем полное сканирование, но не всей таблицы, а индекса.
Ускорить запрос можно только полнотекстом или внешним движком поиска (скажем, сфинксом).
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Несколько вопросов по индексам / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]