1.左連線
左連線的時候,由於左表的資料都會拿到,所以需要對右表建立索引,從而提高查詢效率
2.右連線
右連線的時候,由於右表資料都會拿到,所以需要對左表建立索引,從而提高查詢效率
3.內連線
內連線和右連線一樣,需要左表建立索引,從而提高查詢效率
4.exists和in
exists時先是外表做loop,然後每一次loop後再查詢內錶;in是對外表和內錶做hash連線;具體使用要分環境,小表驅動大表,若a是大表,b是小表
select * from a where a in (select a from b)這個效率是高的,用到了a上的a列索引
select * from b where exists(select a from a where a=b.a 效率高,用到了a上a列的索引
5.not in 和 not exists
not in的時候,內外表都要全表掃瞄,而not exists時,內錶還是可以用到索引,所以not exists 永遠比not in 高效
對MySQL中索引的一些理解
什麼是索引?有人說 索引就是一本書的目錄,當我們想要快速的找到某個點時就可以通過目錄直接跳到相應地方 這只是乙個通俗的說法,索引的定義是 索引是為了加速對錶中資料行的檢索而建立的乙個分散儲存 的資料結構。它是一種資料結構而且是b tree結構。為什麼要建立索引?正確的建立合適的索引會提高資料庫查詢的...
mysql索引技巧 MySql 索引的一些技巧
一 多表子從查詢 多表查詢時,子查詢可能會出現觸發不了索引的情況 select from test 1 where id in select id from test publish where id in 38,69 上面語句,test 1和test public都where了主鍵id,常理來說這...
mysql索引的一些概念
在mysql中,建立索引的時候一般可選的索引型別有 普通索引 normal 最基本的索引,沒有任何限制 唯一索引 unique 索引列的值必須唯一,但允許有空值,全文索引 fulltext 效果類似like,但是比like效率高,多用於大文字欄位的檢索。還有乙個主鍵索引,預設建表指定了主鍵就自動建立...