天天看點

mysql 關聯查詢_mysql關聯查詢的注意事項

需求:想要對兩張千萬級别的表進行join查詢二者的差集,兩張表都建立了索引,按理來說查詢速度應該是比較快的,但是查了一晚上都沒有查出來,最後排查發現了問題的根源,join字段對應的資料類型不一緻導緻;

這裡還要繼續總結一下還需注意的問題,

1、首先要進行join查詢,最好用left或者right join方法。

2、當兩個表的待查詢字段的資料類型不一緻時候索引是失效的。

3、兩個表join查詢時候的引擎要一緻;

4、兩表join查詢字段長度要一緻;

5、兩表join查詢字元集要一緻;

6、char類型是不能轉化為int的

ps:排查mysql可以用explain,但是還沒有用過,以後用到再寫使用方法。但是explain不是萬能的。

實際生産中的sql往往比較複雜,如果資料量過了百萬,加了索引後效果還是不理想,使用叢集。

Tips:

1:加了索引,依然全表掃描的可能情況有:

索引列為字元串,而沒帶引号;

索引列沒出現在where條件後面;

索引列出現的位置沒在前面。

2:關聯查詢不走索引的可能情況有:

關聯的多張表的字元集不一樣;

關聯的字段的字元集不一樣;

存儲引擎不一樣;

字段的長度不一樣。