"Order by" ухудшил производительность в sql - PullRequest
2 голосов
/ 29 марта 2011

Привет у меня есть одна проблема при выполнении sql в postgresql.

У меня похожий запрос, как этот:

выберите A, B, ниже (C) из myTable ORDER BY A, B;

Без предложения ORDER BY, я получаю результат за 11 мс, но при заказе по, чтобы получить те же результаты, потребовалось более 4 минут.

Этот столбец содержит много данных (1000000 или более) и имеет много повторяющихся данных Может кто-нибудь предложить мне решение ??

Спасибо

Ответы [ 3 ]

3 голосов
/ 30 марта 2011

, но при заказе по запросу для получения тех же результатов потребовалось более 4 минут.

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

Но другое решение (вероятно) - это увеличение переменной work_mem.Это почти всегда полезно, если только у вас не запущено много запросов одновременно.

При сортировке больших наборов результатов, которые не вписываются в ваш параметр work_mem, PostgreSQL прибегает к медленной сортировке на диске.Если вы позволите ему использовать больше памяти, он будет выполнять быстрые сортировки в памяти.

NB!Всякий раз, когда вы задаете вопросы о производительности PostgreSQL, вы должны опубликовать вывод EXPLAIN ANALYZE для вашего запроса, а также версию Postgres.

1 голос
/ 29 марта 2011

Вы пытались поставить индекс на A, B?

Это должно ускорить процесс.

0 голосов
/ 29 марта 2011

Вы пытались использовать DISTINCT для устранения дубликатов? Это должно быть более эффективно, чем заказ по заявке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...