首頁  >  文章  >  資料庫  >  mysql資料庫-索引

mysql資料庫-索引

黄舟
黄舟原創
2017-02-28 13:36:331463瀏覽

        索引是一種特殊檔案包含所有記錄所使用的指標。就像一本書的目錄一樣,加快書的檢索速度。資料庫如果沒有索引的話幾乎是不能使用的。曾經有人戲稱,如果使用索引的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;

但对于一下查询语句是无效的:<br>

select * from table where c2=2;

 以上就是mysql数据库-索引的内容,更多相关内容请关注PHP中文网(www.php.cn)!<br>

<br>

<br>

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn