mysql const與eq_ref的區別


簡單地說是const是直接按主鍵或唯一鍵讀取,eq_ref用於聯表查詢的情況,按聯表的主鍵或唯一鍵聯合查詢。

下面的內容翻譯自官方方檔

const
該表最多有一個匹配行, 在查詢開始時讀取。由於只有一行, 因此該行中列的值可以被優化器的其余部分視為常量。const 表非常快, 因為它們只讀一次。

const用於將 "主鍵" 或 "唯一" 索引的所有部分與常量值進行比較。在下面的查詢中, tbl_name 可以用作 const 表:

SELECT * FROM tbl_name WHERE primary_key=1; SELECT * FROM tbl_name WHERE primary_key_part1=1 AND primary_key_part2=2; 

eq_ref

讀取本表中和關聯表表中的每行組合成的一行。除 了 system 和 const 類型之外, 這是最好的聯接類型。當連接使用索引的所有部分時, 索引是主鍵或唯一非 NULL 索引時, 將使用該值。
eq_ref 可用於使用 = 運算符比較的索引列。比較值可以是常量或使用此表之前讀取的表中的列的表達式。在下面的示例中, MySQL 可以使用 eq_ref 連接(join)ref_table來處理:

 
SELECT * FROM ref_table,other_table WHERE ref_table.key_column=other_table.column; SELECT * FROM ref_table,other_table WHERE ref_table.key_column_part1=other_table.column AND ref_table.key_column_part2=1;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM