Union
使用 UNION ALL 完成了多少次表格傳遞?
我正在嘗試執行一個查詢,該查詢將通過一個表進行一次傳遞,並且想知道是否通過使用
UNION ALL
將總行數與唯一行數聯合起來,以便將來自同一個表的查詢聯合起來。此操作是否需要兩次通過表?
UNION ALL 中的每個查詢都是單獨執行的,聯合僅“合併”結果集,因此如果每個查詢都需要讀取整個表,它將被執行兩次。您可以使用 MySQL 中的EXPLAIN或其他 RDBMS 中的類似命令進行檢查。
UNION (ALL) 的一種用法實際上是使用 OR 條件優化查詢,其中單獨的查詢可以比一個“更大”的查詢更好地使用索引。
在您的情況下,您似乎仍然可以只使用一個查詢來完成。只是從您寫的內容中詢問,但您是否考慮過使用
SELECT count(col) AS totalCount, count(distinct col) AS uniqueCount FROM ...
?
或者對於 GROUP BY使用 ROLLUP修飾符?(它是 MySQL - 其他 RDBMS 可能會有類似的東西)