1. 在where 從句,group by 從句,order by 從句,on 從句中出現的列; 2. 索引欄位越小越好; 3. 離散度大的列放到聯合索引的前面;比如: select * from payment where staff_id = 2 and customer_id = 236; 針 ...
1. 在where 從句,group by 從句,order by 從句,on 從句中出現的列;
2. 索引欄位越小越好;
3. 離散度大的列放到聯合索引的前面;比如:
select * from payment where staff_id = 2 and customer_id = 236;
針對上面的查詢是 index(sftaff_id, customer_id) 好?還是index(customer_id, staff_id)好?
因為customer_id的離散度更大,因此用後面的更合適!!
那麼問題來了。怎麼判斷離散度呢,可以使用 select count(distinct customer_id), count(distinct staff_id) from 表名
誰的值大,說明這一些列的離散度更高!