MySQL之索引(index)

MySQL提供有如上圖的存儲引擎,一般情況下,我們使用的默認的存儲引擎都是InnoDB,在MySQL中我們可以用命令:

SHOW ENGINES;

來查詢數據庫存儲引擎的相關情況,如下圖結果:


瞭解完相關的存儲引擎,下面就要開始瞭解索引是個什麼東西了,按照我的理解來說,在mysql如果沒有主鍵外鍵或者索引的話,你檢索某一條具體的數據都將是一條一條往下匹配的,這樣的話在數據量龐大了以後,你在想要找到特定的數據,將會耗費無比巨大的時間代價,據說設置索引的查詢速度能夠比沒有設置索引的查詢速度提升100倍以上。

下面是有關於索引使用的一些例子:


實際操作如下:


接下來就是設計索引的一些原則,總的來說,我理解的索引的原則是這樣的,尋找最有效,最精簡,最少的列來表示某一條特定的數據,也就是設置索引的原則了:


接下來是有關於MySQL支持的兩類索引BTREE和HASH索引的一些區別:


使用索引的總結:


如何判斷索引的使用情況:


MySQL對索引的優化內容:

1.對於創建的多列索引,只要查詢中用到了最左邊的列,索引一般就會被使用,但是假如說只用到非左邊的列那麼索引就不會被使用。
2.對於like的查詢,後面如果是敞亮並且只有%不在第一個字符,索引纔可能會被使用。
3.如果對大的文本進行搜索,使用全文索引而不用like '%....%'。
4.如果列名是索引,使用 cloumn_name is null將使用到索引。
5.使用or的時候如果or左邊是索引列而右邊不是索引列,這樣還是不會使用索引。

6.如果列是字符串類型,那麼一定要在where條件中把字符常量值用引號引起來,否則的話即便這個列上有索引,mysql也不會用到,而是進行全部掃描。

索引的內容基本就是這樣了,記錄下來以後複習的時候也好理解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章