я в настоящее время есть две таблицыЕсть ли способ оптимизировать массив подзапросов в SQL select?
question
--------
id
title, character varying
answer
--------
id
question_id
votes, integer
Я использую следующий запрос, чтобы вернуть мне список вопросов, с соответствующим набором голосов:
SELECT question.id,
question.title,
ARRAY(SELECT votes
FROM answer
WHERE answer.question_id = question.id)
FROM question
ORDER BY question.id
Выход выглядит так:
id | title | ?column?
----+----------+-----------------------------------------------------
100 | How to | {5,2,7}
101 | Where is | {0}
102 | What is | {1}
Вышеприведенный запрос может занять около 50 секунд для запуска сотен тысяч вопросов, на каждом из которых может быть не менее 5 ответов. Есть ли способ оптимизировать вышеизложенное?
Добавлен тег postgresql b/c, который выглядит как синтаксис, специфичный для postgres. Пожалуйста, не стесняйтесь удалять теги, если это не правильная оценка. – bernie
Каков тип столбца 'vote' таблицы' answer'? Это массив или одно целое значение? Я предполагаю, что это одно значение «int». Ваш запрос не работает, если это массив. –
Это целое число –