建立索引後,速度變快原因 以及索引失效總結

2021-08-28 23:25:49 字數 1320 閱讀 1474

總結自韓順平老師教學

速度變快是因為搜尋引擎的選擇,一般是btree,二叉樹的話是logn的時間複雜度;

索引失效的總結。以下是具體描述。

原理示意圖:

.索引使用的注意事項

索引的代價:

占用磁碟空間

對dml操作有影響,變慢

在哪些列上適合新增索引?

總結: 滿足以下條件的字段,才應該建立索引.

a: 肯定在where條經常使用 b: 該字段的內容不是唯一的幾個值(***) c: 字段內容不是頻繁變化.

索引失效的注意事項

(很多都是最左原則)

把dept表中,我增加幾個部門:

alter table dept add index my_ind (dname,loc); //  dname 左邊的列,loc就是右邊的列

說明,如果我們的表中有復合索引(索引作用在多列上), 此時我們注意:

對於建立的多列索引,只要查詢條件使用了最左邊的列,索引一般就會被使用。

explain select * from dept where loc='aaa'\g

就不會使用到索引

2,對於使用

like

的查詢,查詢如果是

『%aaa

』不會使用到索引

『aaa%』 會使用到索引。

比如: explain select * from dept where dname like '%aaa'\g

不能使用索引,即,在like查詢時,關鍵的 『關鍵字』 , 最前面,不能使用 % 或者 _這樣的字元., 如果一定要前面有變化的值,則考慮使用 全文索引->sphinx.

3,如果條件中有or,即使其中有條件帶索引也不會使用。換言之,就是要求使用的所有字段,都必須建立索引, 我們建議大家盡量避免使用or 關鍵字

select * from dept where dname=』***』 or loc=』xx』 or deptno=45

4,如果列型別是字串,那一定要在條件中將資料使用引號引用起來。否則不使用索引。(新增時,字串必須』』), 也就是,如果列是字串型別,就一定要用 『』 把他包括起來.

如果mysql

估計使用全表掃瞄要比使用索引快,則不使用索引。

explain 可以幫助我們在不真正執行某個sql語句時,就執行mysql怎樣執行,這樣利用我們去分析sql指令.

影響Lucene索引速度原因以及提高索引速度技巧

在網上看了一篇外文文章,裡面介紹了提高lucene索引速度的技巧,分享給大家。先來看下影響索引的主要因素 maxmergedocs 該引數決定寫入記憶體索引文件個數,到達該數目後就把該記憶體索引寫入硬碟,生成乙個新的索引segment檔案。所以該引數也就是乙個記憶體buffer,一般來說越大索引速度...

如何加快Oracle建立索引的速度

如何加快建立索引的速度 總結一下 1。使用並行引數,8個cpu,可以用parallel 6 最多占用6個cpu,正常情況下沒問題 前提是其他應用沒有佔超過2個cpu的資源 2。nologging,絕對應該使用,會使速度大幅上公升。減少大量redo log 3。pga,普通的auto pga最大才10...

Mysql之如何建立索引以及組合索引

資料庫中為何要建立索引?這個問題對於做做簡單實驗的學生來說似乎並不需要過於了解,但是,如果處理的資料達到百萬以及以上的時候,合適的索引就能夠體現出很強大的優勢 mysql預設使用b 樹索引 建立索引的三種方式 三種方式 1.create index index name on table name ...