powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Несколько вопросов по индексам
3 сообщений из 3, страница 1 из 1
Несколько вопросов по индексам
    #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
Несколько вопросов по индексам
    #39033754
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не по теме
кнопка CSV, в тэге прописать [СSV=|]таблица...[/CSV]

where A like '%test%' - вынуждает перебор всех строк таблицы (индекса под этот фильтр не существует)
...
Рейтинг: 0 / 0
Несколько вопросов по индексам
    #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
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Несколько вопросов по индексам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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