[英]SQL subquery optimization Access
我對SQL不太了解,所以希望您的知識可以改善下面的查詢。 事實是我的PC無法處理此查詢,因此我想知道是否有更好的方法來執行此操作。
我的查詢是:
SELECT
v.*,
IIF((SELECT COUNT(v2.pk) FROM demo v2
WHERE v.place = v2.place
AND v.date = v2.date) > 1, "Si", "No")
FROM demo AS v;
重點是標記具有相同place
和相同date
另一條記錄的記錄。
從GROUP BY
查詢開始,該查詢可為您提供place
和date
每種組合的計數...
SELECT v2.place, v2.date, COUNT(*) AS group_count
FROM demo AS v2
GROUP BY v2.place, v2.date
然后,您可以將其用作子查詢,再聯接回demo
表並將IIf
表達式添加到頂級SELECT
子句中。
SELECT
v.*, IIf(sub.group_count > 1, 'Si', 'No')
FROM
demo AS v
INNER JOIN
(
SELECT v2.place, v2.date, COUNT(*) AS group_count
FROM demo AS v2
GROUP BY v2.place, v2.date
) AS sub
ON v.place = sub.place AND v.date = sub.date;
關於性能,您應該同時索引place
和date
字段。 如果demo
表確實很大,則此查詢可能不會很快,但它應該比原始版本要快。
我建議您也用要查看的字段列表替換v.*
。 v.*
需要兩個步驟:首先找到與v.*
對應的字段名稱; 其次,檢索這些字段的數據。 因此,列出字段名稱消除了第一步。 而且,如果僅需要查看可用字段的子集,則按名稱列出它們意味着數據庫引擎檢索的數據更少。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.