Общие > Базы данных
Отсортированная таблица
Dj Fly:
Есть ли возможность создать в MySQL изначально отсортированную таблицу по одному из полей..
Предположим, у нас есть два интовых поля...
id | rating
И при выборке следующим запросом :
select * from table limit 1;
результатом была бы запись с наибольшм рейтингом, то есть таблица должна сортироваться сразу при вставке...
Я понимаю, что инсерт в эту таблицу будет тяжёловатым, при большом количестве записей, но идея в том, чтобы не использовать в запросе на выборку директив типа order
Forza:
--- Цитировать ---Dj Fly:
Есть ли возможность создать в MySQL изначально отсортированную таблицу по одному из полей..
--- Конец цитаты ---
Нет возможности. Да и вообще по теории БД таблицу стоит воспринимать как неотсортированный набор строк.
--- Цитировать ---Dj Fly:
идея в том, чтобы не использовать в запросе на выборку директив типа order
--- Конец цитаты ---
А почему? Некошерная?
Dj Fly:
Дело в том, что при размере таблицы в 500000 записей order происходит несколько секунд, а для выдачи результат в клиентском приложении таких операций выполняется несколько.
Explain подобного запроса выдаёт Using Index, Using Filesort...
То есть получается, что при любом запросе на выборку такая таблица должна быть изначально отсортированной по полю rating
Forza:
--- Цитировать ---Dj Fly:
Using Index
--- Конец цитаты ---
Так почему ты индексы не хочешь использовать?
Dj Fly:
Даже используя индексы, получаются тормозявки в районе секунды :(
Важна как можно более быстрая выборка, насколько тяжёл будет инсерт - в общем-то похрен...
Навигация
Перейти к полной версии