|
Индекс не использует при применении функции
|
|||
---|---|---|---|
#18+
Коллеги, всем привет. Есть таблица условно: Код: sql 1. 2. 3. 4. 5.
Для фильтра по dt и timezone делаю индекс: Код: sql 1.
Условный запрос: Код: sql 1. 2. 3.
Индекс не используется. Переписал так: Код: sql 1. 2. 3.
Индекс так же не используется. Пробовал делать индекс чисто по start. Все равно не используется. Есть варианты заставить использовать индекс или они в принципе с функциями не дружат? Или все норм, а я что-то не так делаю\не так проверяю... Большой объем данных не генерил. Но сделал, чтобы выбираемые данные занимали малый % от общего числа. --- Проходя мимо разложенных граблей, ты теряешь драгоценный опыт. (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 23:59 |
|
Индекс не использует при применении функции
|
|||
---|---|---|---|
#18+
Индекс НЕ МОЖЕТ использоваться в указанных запросах. Поле должно быть "чистым". Создай вцчисляемое поле Код: sql 1.
и индекс по нему, и используйте его в запросе. Если версия позволяет, поле создайте VIRTUAL... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2020, 11:04 |
|
Индекс не использует при применении функции
|
|||
---|---|---|---|
#18+
Akina Индекс НЕ МОЖЕТ использоваться в указанных запросах. Поле должно быть "чистым". Создай вцчисляемое поле Код: sql 1.
и индекс по нему, и используйте его в запросе. Если версия позволяет, поле создайте VIRTUAL... Прошу прощения, не дописал, 3(в выражении 3-g.timezone) - в данном случае, входной параметр таймзона. Поэтому вычисляемое поле нельзя сделать заранее. Во втором случае же поле start "чистое", не? Это выражение для сравнения вычисляемое... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2020, 12:40 |
|
Индекс не использует при применении функции
|
|||
---|---|---|---|
#18+
Megabyte 3(в выражении 3-g.timezone) - в данном случае, входной параметр таймзона. Поэтому вычисляемое поле нельзя сделать заранее. Megabyte Во втором случае же поле start "чистое", не? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2020, 14:25 |
|
Индекс не использует при применении функции
|
|||
---|---|---|---|
#18+
Akina Megabyte 3(в выражении 3-g.timezone) - в данном случае, входной параметр таймзона. Поэтому вычисляемое поле нельзя сделать заранее. 1) Что именно есть параметр? я вижу в выражении два поля одной и той же записи. И у меня в выражении для вычисляемого поля - те же два поля в том же самом выражении. Megabyte Во втором случае же поле start "чистое", не? 2) А у тебя что, индекс только по полю start? или таки не? 1) Код: sql 1. 2. 3.
где param - это параметр аналогично в этом варианте: Код: sql 1. 2. 3.
2) Пробовал и индекс по паре start, timezone, так и чисто по start. Не хочет юзать. :( В конечном запросе у меня там еще 2 джойна. Не знаю, может это влияет на использование индекса по start. Полный запрос такой: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2020, 16:16 |
|
Индекс не использует при применении функции
|
|||
---|---|---|---|
#18+
Megabyte, как уже заметили, чтобы заюзать индекс надо сравнивать поле с константой (константой может быть и выражение, которое вычисляется единожды) Код: sql 1.
поясни словами чего хочешь добиться, может обходные пути подскажут ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2020, 18:26 |
|
Индекс не использует при применении функции
|
|||
---|---|---|---|
#18+
Дегтярев Евгений Megabyte, как уже заметили, чтобы заюзать индекс надо сравнивать поле с константой (константой может быть и выражение, которое вычисляется единожды) Код: sql 1.
поясни словами чего хочешь добиться, может обходные пути подскажут Уже нашел сам вариант. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Делаю подзапросом +- 1 день, чтоб зацепить все часовые зоны. Тогда цепляется индекс. А потом уже по получившемуся делаю нужный фильтр. Всем спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 17:13 |
|
Индекс не использует при применении функции
|
|||
---|---|---|---|
#18+
жаль, мы так и не узнали сакрального смысла этого костыля ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 19:43 |
|
Индекс не использует при применении функции
|
|||
---|---|---|---|
#18+
Дегтярев Евгений жаль, мы так и не узнали сакрального смысла этого костыля Я не автор. Мне надо было лишь оптимизировать. Возможно, проблемы с бизнес-логикой и есть. Но меня лично интересовал только момент с функцией и индексом. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 22:56 |
|
|
start [/forum/topic.php?fid=47&fpage=20&tid=1828536]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 125ms |
0 / 0 |