日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

查询除了一列意外_想让你的查询语句变快吗?

發(fā)布時間:2024/1/23 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 查询除了一列意外_想让你的查询语句变快吗? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

蔣蔣~大家吼啊 相信大家都遇到過查詢語句龜速的情況,那心情,那酸爽

大家別怕,我們有索引這個東西

索引:索引提供指向存儲在表的指定列中的數(shù)據(jù)值的指針,然后根據(jù)您指定的排序順序?qū)@些指針排序。數(shù)據(jù)庫使用索引以找到特定值,然后順指針找到包含該值的行。這樣可以使對應(yīng)于表的SQL語句執(zhí)行得更快,可快速訪問數(shù)據(jù)庫表中的特定信息。

而索引也有很多種類的

索引分類

邏輯:單行索引、多行索引、唯一索引、非唯一索引、函數(shù)索引

物理:分區(qū)索引、非分區(qū)索引、B-tree索引、bitmap索引

B-tree索引

它的存儲結(jié)構(gòu)類似于書的目錄索引結(jié)構(gòu),有分支節(jié)點和葉子節(jié)點,分支節(jié)點相當(dāng)于書的大目錄,葉子節(jié)點相當(dāng)于具體到頁的索引。

優(yōu)點:適合高基數(shù)的列(唯一值多),適合與大量的增、刪、改(OLTP)。

缺點:不適合鍵值重復(fù)率較高的字段上使用。

Bitmap索引

是由一串位所組成的。如果某一位置位(為1),就表示該位所對應(yīng)的行包含索引的鍵值。如果該位沒有被置位(為0),就表示該位所對應(yīng)的行不包含索引的鍵值。

優(yōu)點:OLAP 例如報表類數(shù)據(jù)庫 重復(fù)率高的數(shù)據(jù) 特定類型的查詢例如count、or、and等邏輯操作因為只需要進行位運算即可得到我們需要的結(jié)果。

缺點:不適合重復(fù)率低的字段,還有經(jīng)常DML操作(insert,update,delete),因為位圖索引的鎖代價極高,修改一個位圖索引段影響整個位圖段,所以對于OLTP 系統(tǒng)位圖索引基本上是不適用的。

索引掃描的種類

根據(jù)索引的類型與where限制條件的不同分類

(1) 索引唯一掃描(index unique scan)通過unique或primary key約束來保證只返回一條數(shù)據(jù),那么優(yōu)化器就會選擇索引唯一掃描。

(2) 索引范圍掃描(index range scan)使用一個索引存取多行數(shù)據(jù)或者索引鍵非唯一,即使返一行記錄也走范圍掃描。

(3) 索引跳躍掃描(index skip scan)當(dāng)表有一個復(fù)合索引,而在查詢中有除了索引中第一列的其他列作為條件,這時候查詢計劃就有可能使用到。

(3) 索引全掃描(index full scan)和索引快速掃描(index fast full scan)如果想搜索的列都包含在索引里面,那么index full scan 和 index fast full scan 都可以被采用代替full table scan。

index full scan首先要找到索引的根,然后通過枝節(jié)點找到第一個葉節(jié)點,然后再順著葉節(jié)點鏈掃描整個索引,只能使用單塊讀,會發(fā)現(xiàn)大量的db file sequential read等待。

index fast full scan對索引的掃描可以根據(jù)該索引的extent來進行,采用多塊讀的方式進行。因此在這類操作中,我們可以看到會話會大量的出現(xiàn)db file scattered read等待。

索引的適用場合

B*Tree索引

常規(guī)索引,多用于oltp系統(tǒng),快速定位行,應(yīng)建立于存在很少相同值的列。

反向索引

B*Tree的衍生產(chǎn)物,應(yīng)用于特殊場合,在并發(fā)環(huán)境序列增加的列上建立,不適合做范圍掃描。

降序索引

B*Tree的衍生產(chǎn)物,應(yīng)用于有降序排列的搜索語句中,索引中儲存了降序排列的索引碼,提供了快速的降序搜索。

函數(shù)索引

B*Tree的衍生產(chǎn)物,應(yīng)用于查詢語句條件列上包含函數(shù)的情況,索引中儲存了經(jīng)過函數(shù)計算的索引碼值。可以在不修改應(yīng)用程序的基礎(chǔ)上能提高查詢效率。

位圖索引

位圖方式管理的索引,適用于OLAP(在線分析)和DSS(決策處理)系統(tǒng),適合集中讀取,不適合插入和修改,提供比B*Tree索引更節(jié)省的空間。

常見幾種不走索引的場景

(1)隱式類型轉(zhuǎn)換

(2)索引失效

(3)like '%***'

(4)is null 或者is not null

(5)使用<> 或者!=

(6)在索引列上使用函數(shù)

(7)在索引列上運算

點點關(guān)注不迷路~點點轉(zhuǎn)發(fā)真威武~每日更新最新動態(tài)~謝謝各位老爺ヾ(?゚▽゚)

總結(jié)

以上是生活随笔為你收集整理的查询除了一列意外_想让你的查询语句变快吗?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。