第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

問mysql索引的最左原則a,b,c三個使用求解?

問mysql索引的最左原則a,b,c三個使用求解?

交互式愛情 2018-07-12 15:31:56
a,b可以用到索引b,a可以么
查看完整描述

1 回答

?
白衣染霜花

TA貢獻1796條經(jīng)驗 獲得超10個贊

這個要分具體情況,如果是sql中a和b都是等值條件,那么無論索引是(a,b)還是(b,a)都可以用到;但如果a和b有范圍條件,比如select * from table where a=xx,b>xx;
這里b>xx是范圍條件,假設(shè)你有兩個索引(a,b)和(b,a),那么這條sql語句數(shù)據(jù)庫優(yōu)化器會用到索引(a,b);如果只有索引(b,a),語句也可以用到此索引,但根據(jù)最左原則,只能用到用到索引中的b列,a列的查找就用不到索引必須得回表查詢。這里牽扯到數(shù)據(jù)庫mysql的索引B+tree結(jié)構(gòu)原理,講起來內(nèi)容就太多了,建議有時間去看一下二叉樹、b樹、b+樹以及二分查找法的原理。
如果沒時間,這里有一個比較好記的方法,就是如果sql語句where條件都是等值的,那么索引列的順序沒那么重要(但根據(jù)最左原則,索引最左列最好還是使用選擇性高的列);如果sql條件中有范圍條件,那么在索引列的順序就很重要了,關(guān)系到能不能命中索引,簡單來說,索引中范圍條件要盡量往右邊放,比如select * from table a=xx,b=xx,c<xx;那么在創(chuàng)建索引時就需要盡量把c列放最后,(a,b,c)或(b,a,c),如果是(c,a,b),雖然也能用到索引,但效率會很差。

查看完整回答
1 反對 回復(fù) 2018-07-14
  • 1 回答
  • 0 關(guān)注
  • 1127 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號