Задать вопрос
  • Sql query, simple table, big data why long duration?

    @viras777
    Если клиентская часть - это вывод на экран для человека, то ему, человеку, одномоментно не требуется весь млн. Может пагинация по какому-то условию поможет?
  • Как отсортировать поля в 1 таблице по значениям во 2?

    @viras777
    Кстати, если хотите сделать пагинацию, то попробуйте CTE. Минус - не используются индексы, но если у вас на странице пара десятков записей из миллиона, то будет существенно быстрее всё равно.
    В вашем случае:
    with t as (select id from blog order by date_added desc, blog_id desc limit 5, 5 ) select i.* from blog i, t left join blog_description... where i.id=t.id

    Тем самым вы существенно сократите первую таблицу, к которой джойнятся остальные.
    И второе - НИКОГДА не используйте SELECT *, только перечисление полей, т.к. текстовые столбцы выбираются через временную таблицу и в будущем если вы добавить ещё столбец, селект может заглючить, например, появится 2 одинаковых имени.

    Резюме: в таблицу t вы предварительно выбираете только айдишники с ограничением по кол-ву, по ним прикрепляете остальные поля с той же таблице, а потом join других.
  • Как отсортировать поля в 1 таблице по значениям во 2?

    @viras777
    Вопрос не понял, но по вашему первому селекту поправил бы немного.
    У вас: "WHERE id.language_id =..."
    Лучше бы: "blog_description id ON (i.blog_id = id.blog_id AND id.language_id=...)"
    и остальные аналогично. Суть в том, чтобы уменьшить таблицу которая участвует в join, тем самым ускорив процесс. Если делать как у вас, то сначала проходит объединение таблиц (очень накладная операция), а потом отсечение лишнего по where - это намного накладнее.