создание из виртуального столбца реальный

Статус
В этой теме нельзя размещать новые ответы.

dazed

Гуру форума
Регистрация
31 Мар 2007
Сообщения
208
Реакции
54
В одном из запросов формирую один виртуальный столбец по CASE условию из трех столбцов, и так вот вышло что именно по нему нужно делать сортировку и выборку с помощью HAVING, таблица большая больше 50 000 записей. Так понимаю SQL по ней проходится полностью. Возможно ли создание индекса к этому виртуальному столбцу?

У меня как вариант сделать в структуре еще один столбец и загонять туда сформированный данные, с обновлением раз в сутки.

Может быть есть по красивее решение?
 
Почему бы не сделать
select * from (
select id , ..., case ... as virt
from table)
group by virt
having virt>5
 
разве это что-то даст в производительности?
 
разве это что-то даст в производительности?

Это решение не требует дополнительных объектов и данные всегда актуальны:)
а если еще отсекать по дате - то будет шустро работать
 
я наподобие такого уже сделал, только чуть по другому, но этот запрос может быть тупить когда большая выборка без условий, а ему нужно сортировать именно по этому виртуальному столбцу и он проходит полностью, что занимает много времени.
 
я наподобие такого уже сделал, только чуть по другому, но этот запрос может быть тупить когда большая выборка без условий, а ему нужно сортировать именно по этому виртуальному столбцу и он проходит полностью, что занимает много времени.

Возможно, если на этих трех полях висят отдельные индексы, mysql будет перебирать их. Но не уверен, надо пробовать.

Иначе остается вариант, как ты правильно отметил, создать столбец, повесить на него индекс и по расписанию, раз в полчаса-час, апдейтить его на всей таблице.
 
да индексы на этих полях висят, но очень долго около 2 сек, выдает запрос.
 
да индексы на этих полях висят, но очень долго около 2 сек, выдает запрос.

Значит, так с индексами он не может работать. А почему решение с отдельным столбцом не нравится? Актуальные данные очень редко нужны на лету, обычно раз в полчаса обновлять более чем достаточно.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху