索引是一種特殊檔案包含所有記錄所使用的指標。就像一本書的目錄一樣,加快書的檢索速度。資料庫如果沒有索引的話幾乎是不能使用的。曾經有人戲稱,如果使用索引的mysql是一輛蘭博基尼的話,沒有使用索引頂多就是一個人力三輪。
索引分為叢集索引和非叢集索引。叢集索引提高多行的檢索速度,非聚集索引提高單行資料的檢索速度。在資料庫的功能中,可以建立三種索引:唯一索引,主鍵索引和聚集索引。
普通索引是一種沒有任何限制的索引,其建立過程:CREATE
INDEX
#index_name
#ON
table
(
column
#(col_name));它是MYIASM資料庫引擎預設的BTREE類型的索引。使用navicat導出mysql資料庫腳本的時候常常會看到這樣的欄位。
<strong> 唯一索引</strong>是在普通索引的基礎上保證索引列的值必須唯一,除主鍵外可以有空值。建立流程:
CREATE UNIQUE INDEX indexName ON table(column(length))
#索引的優點和缺點:
##
# 索引大幅提高查詢與排序速度,但是會小號資料保存與更新效率。索引需要產生索引文件,當大量使用組合索引的話,索引文件就會迅速膨脹。 針對這些問題,提出了以下最佳化方法:
# 1. 何時使用聚集索引或非聚集索引? | ||
#使用聚集索引 | ||
列經常被分組排序 | 使用 | |
傳回某範圍內的資料 | 使用 | |
一個或極少不同值 | 不使用 | |
小數目的不同值 | 使用 | |
大數目的不同值 | 不使用 | |
#頻繁更新的列 | 不使用 | |
外鍵列 | 使用 | |
#主鍵列 | 使用 |
2. 使用短索引列。
<strong>
</strong>索引列如果使用varchar(255)的话会让索引文件变大,不利于检索,这255个字符中前10或20个字符能够保证索引唯一的话,就使用这些字段作为索引列即可。
3.
like语句
在数据库操作中不建议使用like语句,但费用不可时,like"%aaa%"不会使用索引而like“aaa%”则可以使用索引。
4.
不要再索引列执行运算,这样会导致索引失效。
5.
使用越小越简单的数据类型越好;尽量避免null;
6.
组合索引仅能对索引最左边的索引进行有效查询。如:
索引列为c1,c2,以下查询语句有效:
select * form table where c1=1 and c2=2; select * from table where c1=1;
但对于一下查询语句是无效的:
select * from table where c2=2;
以上就是mysql数据库-索引的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!<br>
<br>
<br>