Size: a a a

2020 May 14

🇻

🇻 🇱 🇦 🇩 in ru_mysql
Александр
условие надо, а вот индекс совершенно излишний и будет только ухудшать ситуацию
в текущем запросе можно использовать покрывающий индекс,
если добавлять в условие статус без индекса - это чтение строк с таблицы, больно
если добавить статус в индекс - оверхед небольшой, но уходим от чтения строк в таблице
источник

MC

Mr. Crestoff in ru_mysql
Александр
дак ты выполнял не запрос а какое-то недоразумение сгенерированное ОРМом вот в этом и проблема
тут согласен, но это недоразумение можно и переписать на твой запрос на языке ОРМ, и будет тоже хорошо, изначально написан запрос неверно, не я его писал, признаюсь честно.
источник

MC

Mr. Crestoff in ru_mysql
я даже для интереса так и сделаю :)
источник

А

Александр in ru_mysql
🇻 🇱 🇦 🇩
в текущем запросе можно использовать покрывающий индекс,
если добавлять в условие статус без индекса - это чтение строк с таблицы, больно
если добавить статус в индекс - оверхед небольшой, но уходим от чтения строк в таблице
но MySQL не умеет юзать индексное соединять в лупе по 2м столбцам, по крайней мере 5ка точно, а индекс распухнет
источник

А

Александр in ru_mysql
вот в Оракле это имело бы смысл
источник

🇻

🇻 🇱 🇦 🇩 in ru_mysql
Александр
но MySQL не умеет юзать индексное соединять в лупе по 2м столбцам, по крайней мере 5ка точно, а индекс распухнет
это если добавить отдельно индекс на статус, тогда да, есть вероятность что пройдет силяние индексов
источник

А

Александр in ru_mysql
хотя не, тоже бы ничего не улучшилось
источник

🇻

🇻 🇱 🇦 🇩 in ru_mysql
а тут, order_id,status. в индексе прямо хранятся все данные для апдейта
источник

🇻

🇻 🇱 🇦 🇩 in ru_mysql
хотя, там же были доп условия
источник

🇻

🇻 🇱 🇦 🇩 in ru_mysql
всеравно чтение строк с таблицы
источник

А

Александр in ru_mysql
вот если добавить в индекс
option_id,status,deleted_at
то это нам даст доступ index scan only, вот тут можно существенно выиграть, особенно для разряжённых фрагментированных таблиц
источник

🇻

🇻 🇱 🇦 🇩 in ru_mysql
Александр
вот если добавить в индекс
option_id,status,deleted_at
то это нам даст доступ index scan only, вот тут можно существенно выиграть, особенно для разряжённых фрагментированных таблиц
да
источник

А

Александр in ru_mysql
но это выигрыш на спичках
источник

🇻

🇻 🇱 🇦 🇩 in ru_mysql
ток наверное
option_id,deleted_at,status
источник

🇻

🇻 🇱 🇦 🇩 in ru_mysql
🇻 🇱 🇦 🇩
ток наверное
option_id,deleted_at,status
ибо по уменьшению селективности, и с учетом того что у нас вншний ключ на option_id
источник

А

Александр in ru_mysql
🇻 🇱 🇦 🇩
ток наверное
option_id,deleted_at,status
это без разницы, тут даже выгоднее было бы сделать что то типа
CREATE INDEX option_id INCLUDE (deleted_at,status)
но это есть только в MSSQL'е, ну в постгресе мб
источник

А

Александр in ru_mysql
по второму листу индекса уже не выгодно ходить вообще
option_id,deleted_at,status
источник

🇻

🇻 🇱 🇦 🇩 in ru_mysql
Александр
по второму листу индекса уже не выгодно ходить вообще
option_id,deleted_at,status
согласен
источник

🇻

🇻 🇱 🇦 🇩 in ru_mysql
не подумал
источник

🇻

🇻 🇱 🇦 🇩 in ru_mysql
Александр
по второму листу индекса уже не выгодно ходить вообще
option_id,deleted_at,status
типо если статус 1 то зачем ходить
источник