Форум программистов, компьютерный форум, киберфорум
Наши страницы
MySQL
Войти
Регистрация
Восстановить пароль
 
crautcher
2019 / 1991 / 463
Регистрация: 27.05.2011
Сообщений: 6,837
1

Индекс под запрос

10.03.2017, 16:49. Просмотров 206. Ответов 4
Метки нет (Все метки)

Какой индекс влепить, чтобы охватил и условия и сортировку?
MySQL
1
select * from NewUsers where Layer = 1 and LastDefDate = '0000-00-00' and LastSend < '2017-03-09 15:27:45' order by Prior , LastSend desc
Создал вроде-ж на 4 поля
MySQL
1
 add index ix_mainSelect(`Layer`,`LastDefDate`,`Prior`,`LastSend`);
Explain select:
MySQL
1
2
3
4
5
+------+-------------+----------+------+---------------+---------------+---------+-------------+------+----------------------------------------------------+
| id   | select_type | table    | type | possible_keys | key           | key_len | ref         | rows | Extra                                              |
+------+-------------+----------+------+---------------+---------------+---------+-------------+------+----------------------------------------------------+
|    1 | SIMPLE      | NewUsers | ref  | ix_mainSelect | ix_mainSelect | 54      | const,const |  304 | Using index condition; Using where; Using filesort |
+------+-------------+----------+------+---------------+---------------+---------+-------------+------+----------------------------------------------------+
Индекс определился, почему filesort?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2017, 16:49
Ответы с готовыми решениями:

Оптимизировать запрос под MySql
Суть, есть вектор строковых значений, длинна вектора динамическая, строковые...

Как оптимизировать базу под запрос?
База вцелом должна хранить вот такие параметры: fames VARCHAR(100) names...

DB2 backup под Windows и под Linux.
Сделал backup DB2 базы данных. DB2 стоит под виндой. Клиент будет...

Как записать запрос так чтобы их запрос суммировался в одну ячейку?
Как записать этот запрос так чтобы их запрос суммировался в одну ячейку?...

Как записать этот запрос так чтобы их запрос суммировался в одну ячейку?
Как записать этот запрос так чтобы их запрос суммировался в одну ячейку?...

4
Joeymax
952 / 335 / 69
Регистрация: 31.03.2012
Сообщений: 899
10.03.2017, 18:56 2
Цитата Сообщение от crautcher Посмотреть сообщение
Using index condition;
только для Layer = 1
Цитата Сообщение от crautcher Посмотреть сообщение
LastDefDate = '0000-00-00'
для это этого условия ограничение where, а уж далее закономерный order by
0
retvizan
310 / 296 / 109
Регистрация: 09.04.2011
Сообщений: 817
11.03.2017, 14:10 3
Цитата Сообщение от crautcher Посмотреть сообщение
Какой индекс влепить, чтобы охватил и условия и сортировку?
для данного запроса никак.

Joeymax, вы не правы, см https://mariadb.com/kb/en/mariadb/index-condition-pushdown/
0
Joeymax
952 / 335 / 69
Регистрация: 31.03.2012
Сообщений: 899
11.03.2017, 16:51 4
Цитата Сообщение от retvizan Посмотреть сообщение
вы не правы
посмотрел ссылку по диагонали, не понял все же в чем не прав Я лишь дал объяснение ТС для его explain. Если убрать из начального запроса ТС order by в explain не будет using filesort. Если еще удалить индекс, то в explain будет только using where. А там пусть ТС думает какие индексы нужны и как ему избавиться от сортировки. И все же, в чем же я не прав?
0
retvizan
310 / 296 / 109
Регистрация: 09.04.2011
Сообщений: 817
11.03.2017, 18:27 5
Цитата Сообщение от Joeymax Посмотреть сообщение
И все же, в чем же я не прав?
в интерпретации explain

как минимум, в том, что Using index condition; относится к Layer = 1

вторая фраза не очень понятна, если речь о том, что условие LastDefDate = '0000-00-00' относится к Using where, то это тоже не так.
0
11.03.2017, 18:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2017, 18:27

Запрос в цикле или один длинный запрос?
Подскажите, пожалуйста, как лучше поступить? Есть магазин с 20 тыс товаров....

Как сделать запрос, что бы найти минимальное число через под ЗАПРОС
Этот запрос у меня считает минимальное время ( сколько часов ведет урок...

при запросе вида «script.php?id=ЗАПРОС» выводить статью под номером «ЗАПРОС»
Написать php-скрипт, который при запросе вида «script.php?id=ЗАПРОС» будет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru