簡體   English   中英

通過減少列數來提高SQL笛卡爾產品性能

[英]Improving SQL cartesian product performance by reducing columns

我有一個SQL查詢,該查詢在大型表上使用笛卡爾積。 但是,我只需要其中一張表中的一列。 如果在使用笛卡爾積之前只選擇了那一列,它實際上會更好嗎?

因此,換句話說,這將是:

SELECT A.Id, B.Id
FROM (SELECT Id FROM Table1) AS A , Table2 AS B;

鑒於Table1的列多於ID,因此比這更快嗎:

SELECT A.Id, B.Id
FROM Table1 AS A , Table2 AS B;

還是列數沒有關系?

在大多數數據庫上,這兩種形式將具有相同的執行計划。

在實現子查詢的數據庫(例如MySQL)上,第一種情況可能會更糟。

第二個應該更好地使用兩個表上的索引。 table1(id)table2(id) 索引將用於獲取值,而不是基礎數據。

自己嘗試一下! 但是通常來說,讓子查詢減少行數將有助於提高性能。 但是,您的查詢應該寫成不同的形式:

select a.id aid, b.id bid from
(Select id from table1 where id=<specific_id>) a, table2 b

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM