聯系我們 - 廣告服務 - 聯系電話:
您的當前位置: > 關注 > > 正文

環球消息!javascript索引是什么?javascript索引的概念及技巧

來源:CSDN 時間:2023-02-17 09:09:57


(資料圖)

一、索引的概念及技巧

舉例,業務場景,用戶表,表結構為:t_user(uid primary key,login_name unique,passwd,login_time,age,…);

1.聚合索引

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

2.非聚集索引

非聚集索引(non-clustered index):它并不決定數據在磁盤上的物理排序,索引上只包含被建立索引的數據,以及一個行定位符row-locator,這個行定位符,可以理解為一個聚集索引物理排序的指針,通過這個指針,可以找到行數據。 舉例,查找年輕MM的業務需求:select uid from t_user where age > 18 and age < 26;age上建立的索引,就是非聚集索引。

3.聯合索引

聯合索引:多個字段上建立的索引,能夠加速復核查詢條件的檢索舉例,登錄業務需求:select uid, login_time from t_user where login_name=? and passwd=?可以建立(login_name, passwd)的聯合索引。聯合索引能夠滿足最左側查詢需求,例如(a, b, c)三列的聯合索引,能夠加速a | (a, b) | (a, b, c)

提問:

select uid, login_time from t_user wherepasswd=? and login_name=?能否命中(login_name, passwd)這個聯合索引?回答:可以,最左側查詢需求,并不是指SQL語句的寫法必須滿足索引的順序(這是很多朋友的誤解)索引覆蓋:被查詢的列,數據能從索引中取得,而不用通過行定位符row-locator再到row上獲取,即“被查詢列要被所建的索引覆蓋”,這能夠加速查詢速度。舉例,登錄業務需求:select uid, login_time from t_user wherelogin_name=? and passwd=?可以建立(login_name, passwd, login_time)的聯合索引,由于login_time已經建立在索引中了,被查詢的uid和login_time就不用去row上獲取數據了,從而加速查詢。末了多說一句,登錄這個業務場景,login_name具備唯一性,建這個單列索引就好。

責任編輯:

標簽:

相關推薦:

精彩放送:

新聞聚焦
Top 岛国精品在线