если вы хотите узнать, COUNT(*)
> 0, вы можете использовать EXISTS
, чтобы сделать запрос более эффективным. Есть ли способ сделать запрос более эффективным, если я хочу знать, COUNT(*)
> 1?
(Должен быть совместим как с SQL Server, так и с Oracle.)
Спасибо, Джейми
Редактировать:
Я пытаюсь улучшить производительность некоторого кода. Есть несколько строк, похожих на:
if (SQL('SELECT COUNT(*) FROM table WHERE a = b') > 0) then...
и
if (SQL('SELECT COUNT(*) FROM table WHERE a = b') > 1) then...
В первой строке достаточно легко переключиться на оператор EXISTS
, но могу ли я сделать вторую строку более эффективной? Из комментариев и моих собственных мыслей у меня есть следующие идеи, может ли какая-нибудь из них быть более эффективной?
if (SQLRecordCount('SELECT TOP 2 1 FROM table WHERE a = b') > 1) then...
(Я могу использовать ROWNUM
для Oracle.)
if (SQL('SELECT 1 FROM table WHERE a = b HAVING COUNT(*) > 1') = 1) then...
Следующее не работает в SQL Server:
SELECT COUNT(*) FROM (SELECT TOP 2 FROM table WHERE a = b)
Но это касается Oracle:
SELECT COUNT(*) FROM (SELECT 1 FROM table WHERE a = b AND ROWNUM < 3)
Спасибо за вашу помощь.