MySQL Ref是MySQL查詢優化器使用索引的一種方式,在查詢中對于某一個索引列,如果在該列的基數(列中唯一值的數量)很小的情況下,查詢優化器就會使用Ref來進行索引查找,從而提高查詢效率。
例如: CREATE TABLE student ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(50) NOT NULL, age int(11) NOT NULL, PRIMARY KEY (id), KEY idx_age (age) ) ENGINE=InnoDB; SELECT id, name FROM student WHERE age = 20; 以上SQL語句中,age列被索引,索引名稱為idx_age, 如果idx_age中不同的age值只有兩三個,也就是基數很小的時候, 就會使用Ref來進行查找,否則就會全表掃描或者使用其他方式進行查找。
需要注意的是,Ref只能用于查找等于、不等于和部分等于的情況,例如下面這個例子:
SELECT id, name FROM student WHERE age = 20 OR age = 25;
在這種情況下,如果idx_age中age=20和age=25的基數都比較小,那么就會使用Ref來進行查找。
總的來說,MySQL Ref是MySQL查詢優化器對于基數小的索引列使用的一種優化手段,可以極大地提高查詢效率。