91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql數據庫中使用索引技巧有哪些

發布時間:2021-07-29 09:10:31 來源:億速云 閱讀:106 作者:小新 欄目:數據庫

這篇文章主要介紹了mysql數據庫中使用索引技巧有哪些,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

花1分鐘時間,了解聚集索引,非聚集索引,聯合索引,索引覆蓋。

舉例,業務場景,用戶表,表結構為:

t_user(

uid primary key,

login_name unique,

passwd,

login_time,

age,

…

);

聚集索引(clustered index):聚集索引決定數據在磁盤上的物理排序,一個表只能有一個聚集索引,一般用primary key來約束。

舉例:t_user場景中,uid上的索引。

非聚集索引(non-clustered index):它并不決定數據在磁盤上的物理排序,索引上只包含被建立索引的數據,以及一個行定位符row-locator,這個行定位符,可以理解為一個聚集索引物理排序的指針,通過這個指針,可以找到行數據。

舉例,查找年輕MM的業務需求:

select uid from t_user where age > 18 and age < 26;

age上建立的索引,就是非聚集索引。

聯合索引:多個字段上建立的索引,能夠加速復核查詢條件的檢索

舉例,登錄業務需求:

select uid, login_time from t_user where 

login_name=? and passwd=?

可以建立(login_name, passwd)的聯合索引。

聯合索引能夠滿足最左側查詢需求,例如(a, b, c)三列的聯合索引,能夠加速a | (a, b) | (a, b, c) 三組查詢需求。

這也就是為何不建立(passwd, login_name)這樣聯合索引的原因,業務上幾乎沒有passwd的單條件查詢需求,而有很多login_name的單條件查詢需求。

提問:

select uid, login_time from t_user where

passwd=? and login_name=?

能否命中(login_name, passwd)這個聯合索引?

回答:可以,最左側查詢需求,并不是指SQL語句的寫法必須滿足索引的順序(這是很多朋友的誤解)

索引覆蓋:被查詢的列,數據能從索引中取得,而不用通過行定位符row-locator再到row上獲取,即“被查詢列要被所建的索引覆蓋”,這能夠加速查詢速度。

舉例,登錄業務需求:

select uid, login_time from t_user where

login_name=? and passwd=?

可以建立(login_name, passwd, login_time)的聯合索引,由于login_time已經建立在索引中了,被查詢的uid和login_time就不用去row上獲取數據了,從而加速查詢。

末了多說一句,登錄這個業務場景,login_name具備唯一性,建這個單列索引就好。

作業:

假設訂單有三種狀態:0已下單,1已支付,2已完成

業務需求,查詢未完成的訂單,哪個SQL更快呢?

select * from order where status!=2

select * from order where status=0 or status=1

select * from order where status IN (0,1)

select * from order where status=0

union

select * from order where stauts=1

感謝你能夠認真閱讀完這篇文章,希望小編分享的“mysql數據庫中使用索引技巧有哪些”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

理塘县| 云阳县| 青铜峡市| 晴隆县| 绥中县| 三台县| 陕西省| 开阳县| 永康市| 永靖县| 确山县| 两当县| 长岭县| 藁城市| 松阳县| 丰都县| 祁连县| 东台市| 珠海市| 巴青县| 麦盖提县| 乐平市| 永春县| 阿坝县| 景东| 凉山| 图木舒克市| 新密市| 永康市| 宁城县| 屯门区| 岚皋县| 将乐县| 麻阳| 鹤庆县| 青田县| 甘谷县| 郸城县| 新绛县| 通江县| 疏附县|