簡體   English   中英

如何避免在sql中進行全表掃描

[英]How to avoid full table scan in sql

    SELECT 
      DISTINCT P.IDENTIFICATIONNUM IDNUMBER, 
      P.NAME NAME, 
      P.NATIONALITY NATIONALITY, 
      O.NAME COMPANY
    FROM APPLICANT_TB P
    LEFT JOIN APP_TB A ON A.APPLICANTID=P.APPLICANTID
    LEFT JOIN ORGANISATION_TB O ON O.ORGID = A.ORGID

正如sql代碼所示,我正在使用IBM DB2,並根據解釋計划,所有3個表都是全表掃描。有人告訴我如何避免這種情況? (所有PK使用都被編入索引)

對所需記錄更具選擇性。 包含WHERE子句。

由於您選擇了所有行,因此最有效的方法是將這些行返回給您進行表掃描。

即使您添加過濾器,您仍然可以進行表掃描,這取決於索引與要過濾的列的匹配程度,以及數據庫統計信息的最新狀態。

通常,查詢優化器會根據您的過濾器猜測所需表的百分比。 一旦該百分比超過表格的某個(令人驚訝的小,如20%)部分,它將選擇表格掃描作為獲取您要求的數據的“最佳”方式。

暫無
暫無

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

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