索引用來快速地尋找那些具有特定值的記錄,所有mysql索引都以b-樹的形式儲存。如果沒有索引,執行查詢時mysql必須從第乙個記錄開始掃瞄整個表的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就越高。如果作為搜尋條件的列上已經建立了索引,mysql無需掃瞄任何記錄即可迅速得到目標記錄所在的
位置。如果表有1000個記錄,通過索引查詢記錄至少要比順序掃瞄記錄快100倍。
索引的型別
mysql提供多種索引型別供選擇:
普通索引
這是最基本的索引型別,而且它沒有唯一性之類的限制。普通索引可以通過以下幾種方式建立:
建立索引,例如create index 《索引的名字》 on tablename (列的列表);
修改表,例如alter table tablename add index [索引的名字] (列的列表);
建立表的時候指定索引,例如create table tablename ( [...], index [索引的名字] (列的列表) );
唯一性索引
這種索引和前面的「普通索引」基本相同,但有乙個區別:索引列的所有值都只能出現一次,即必須唯一。唯一性索引可以用以下幾種方式建立:
建立索引,例如create unique index 《索引的名字》 on tablename (列的列表);
修改表,例如alter table tablename add unique [索引的名字] (列的列表);
建立表的時候指定索引,例如create table tablename ( [...], unique [索引的名字] (列的列表)
); 主鍵
主鍵是一種唯一性索引,但它必須指定為「primary key」。如果你曾經用過auto_increment型別的列,你可能已經熟悉主鍵之類的概念了。主鍵一般在建立表的時候指定,
例如「create table tablename ( [...], primary key (列的列表) ); 」。但是,我們也可以通過修改表的方式加入主鍵,
例如「alter table tablename add primary key (列的列表); 」。每個表只能有乙個主鍵。
全文索引
mysql從3.23.23版開始支援全文索引和全文檢索。在mysql中,全文索引的索引型別為fulltext。全文索引可以在varchar或者text型別的列上建立。
它可以通過create table命令建立,也可以通過alter table或create index命令建立。對於大規模的資料集,通過alter table(或者create index)命令
單列索引與多列索引
索引可以是單列索引,也可以是多列索引。下面我們通過具體的例子來說明這兩種索引的區別。假設有這樣乙個people表:
create table people ( peopleid smallint not null auto_increment, firstname char(50)
not null, lastname char(50) not null, age smallint not null, townid smallint not
null, primary key (peopleid) );
簡單的說,索引就好比一本書的目錄,你只要瀏覽標題就可以快速的找到具體內容是放在哪一頁的。也就是說用select查詢時不用直接去搜尋表,只要查詢索引,就可以直接定位到你想查詢的內容位置。索引帶來的方便不是免費的,是以每次插入或更新(相當於刪除並插入)時都要維護索引為代價的。所以如果一張表更多是用於
查詢而很少插入,那麼就可以建立盡量多的索引以優化查詢效能。相反如果一張表要經常插入或更新,則盡可能少用索引,有時甚至連主鍵都不建。
MySql資料庫索引介紹
資料庫索引對我們來說是透明的,因為資料庫表建立索引前後,sql語句都可以正常執行,索引的運用只是資料庫引擎工作時候的優化手段。但是,這並不是說資料庫索引僅僅是資料庫設計開發人員和運維人員的事情,對於乙個測試人員,如果對資料庫中已有的索引有所了解,可以對測試過程中發現的涉及資料庫操作的問題進行深入分析...
MySQL 資料庫索引介紹
索引就是加快檢索表中資料的方法。資料庫的索引類似於書籍的索引。在書籍中,索引允許使用者不必翻閱完整個書就能迅速地找到所需要的資訊。在資料庫中,索引也允許資料庫程式迅速地找到表中的資料,而不必掃瞄整個資料庫。mysql好比跑車,而沒有設計和使用索引的mysql就想乙個人力三輪車,沒有索引的表 資料量在...
資料庫mysql索引 資料庫 mysql索引
mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...