Общие > Базы данных

Отсортированная таблица

<< < (2/4) > >>

Макс:

--- Цитировать ---Dj Fly:
Предположим, у нас есть два интовых поля... id | rating
--- Конец цитаты ---

предлагаю от теории перейти к практике и показать реальную таблицу и реальные запросы которые ты делаешь.

Dj Fly:
Ok, существует несколько таблиц типа:
id | rating
В каждой из них может быть до полумиллиона записей...
На id повешен индекс
Запрос на выборку - склеивающий и выглядит следующим образом:
select test.a.id,(test.a.rating+test.b.rating+
 test.c.rating+test.d.rating+test.e.rating)
 from test.a,test.b,test.c,test.d,test.e where
 test.a.id=test.b.id and test.a.id=test.c.id
 and test.a.id=test.d.id and test.a.id=test.e.id limit 1000
Таким образом, у нас склеиваются до 5 таблиц по ID с тем, чтобы получить 1000 тех ID, которые обладают наивысшим рейтингом и содержатся в каждой из таблиц
В данном запросе нет директив типа order, дающих возможность получить ID с НАИВЫСШИМ рейтингом, но если бы таблицы были отсортированы изначально - этот запрос давал бы желаемый результат.
Применение инструкции order by rating, даже с повешенным индексом на поле rating замедляет операцию простой выборки из одной из таблиц, уж не говоря о запросе такого типа, ведь от-ордерить надо будет все 5 таблиц...
А вот полное сканирование дало бы сразу быстро желаемый результат, если бы таблицы были сразу отсортированы по полю rating

commander:
Dj Fly
Мы по моему уже обсуждали с тобой эту проблемму... тут тебе можно посоветовать перестать высасывать из php+mysql  то что они тебе дать не могут... и перейти на системы которые позволят тебе достич желаемого результата...

Dj Fly:
Мы обсуждали подобную, но важно ли это...
Вопрос стоит так или иначе:
Есть ли такая возвожность?
Или нет?
И есть ли какие-либо предложения, способные хотя-бы навести на мысль к решению данной проблемы?

Макс:
создай еще одну таблицу:
id | sum_rating
Из названий полей идея ясна ?

Это конечно избіточность данных, но должно повысить скорость выборки

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии