MySQL創建索引命令


MySQL索引類型

  1. 普通索引
    創建索引的方式
-- 直接新建索引
 CREATE INDEX indexName ON mytable(username(length)) 
-- 修改表結構新建索引
 ALTER mytable ADD INDEX [indexName] ON (username(length))  
-- 創建表的時候 建立索引
 CREATE TABLE mytable(ID INT NOT NULL,username VARCHAR(16) NOT NULL,INDEX [indexName] (username(length)) ) 
-- 刪除索引的語法
 DROP INDEX [indexName] ON mytable;   

如果是CHAR或者VARCHAR類型,length可以小於字段實際長度;如果是BLOB或TEXT類型,必須指定length。

  1. 唯一索引
    它與前面的普通索引類似,不同的就是:索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。
-- 創建唯一索引
CREATE UNIQUE INDEX indexName ON mytable(username(length))
-- 修改表結構
ALTER mytable ADD UNIQUE [indexName] ON (username(length)) 
-- 創建表的時候直接指定
CREATE TABLE mytable(ID INT NOT NULL,username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username(length)));
  1. 主鍵索引(即主鍵)
    特殊的唯一索引, 不允許有空值。一般是在建表的時候同時創建主鍵索引。
CREATE TABLE mytable( 
    ID INT NOT NULL,
    username VARCHAR(16) NOT NULL,  
    PRIMARY KEY(ID)
);
  1. 組合索引
    單個索引項里包含多個字段。
ALTER TABLE mytable ADD INDEX name_city_age (username(10),city,age);

最左前綴原則: 只從最左面的開始組合。比如上面就是建立了 username city , username age ,username city age 。並沒有city age 這樣的組合索引。

使用MySQL索引注意事項

  1. 索引不會包含有NULL值的列
    只要列中有包含NULL值都將不會被包含在索引里,復合索引中只要有一列含有NULL值,那么這一列對此復合索引都是無效的。
  2. 使用短索引
    對於串列進行索引,如果可能應該指定一個前綴長度。例如:如果有一個CHAR(255)的列,如果前10個或20個字符內,多數值是唯一的,那么就不要對整個列進行索引。短索引不僅可以提高查詢數據而且可以節省磁盤空間和I/O操作。
  3. 索引排序
    MySQL查詢只使用一個索引,因此如果where子句中已經使用了索引的話,那么order by中的列是不會使用索引的。因此數據庫默認排序可以符合要求的情況下不要使用排序操作;盡量不要包含多個列的排序,如果需要最好給這些列創建復合索引。
  4. like語句操作
    一般情況下不鼓勵使用like操作,如果非使用不可,請盡量使用 like "aaa%" 而非 like "%aaaa%" ,因為前者是可以使用索引的,而后者不會。
  5. 盡量少使用NOT IN和<>操作.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM