本文主要介紹了7種不同型別的mysql索引型別。在mysql資料庫表中,對欄位進行建立索引是可以大幅度的提高其實際查詢速度。通過對這些索引的巧妙的運用,我們可以令mysql的查詢和執行更加高效。
索引是快速搜尋的關鍵。mysql索引的建立對於mysql的高效執行是很重要的。
下面介紹幾種常見的mysql索引型別:
在資料庫表中,對欄位建立索引可以大大提高查詢速度。假如我們建立了乙個 mytable表:
create table mytable( id int not null, username varchar(16) not null );
我們隨機向裡面插入了10000條記錄,其中有一條:5555, admin。
在查詢username="admin"的記錄
select * from mytable whereusername='admin';
時,如果在username上已經建立了索引,mysql無須任何掃瞄,即準確可找到該記錄。相反,mysql會掃瞄所有記錄,即要查詢10000條記錄。
索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可以有多個單列索引,但這不是組合索引。組合索引,即乙個索包含多個列。
mysql索引型別包括:
(1)普通索引
這是最基本的索引,它沒有任何限制。它有以下幾種建立方式:
建立索引
create index indexname on mytable(username(length));
如果是char,varchar型別,length可以小於字段實際長度;如果是blob和text型別,必須指定 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;
(2)mysql索引型別:***索引
它與前面的普通索引類似,不同的就是:索引列的值必須***,但允許有空值。如果是組合索引,則列值的組合必須***。它有以下幾種建立方式:
建立索引
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)) );
(3)mysql索引型別:主鍵索引
它是一種特殊的***索引,不允許有空值。一般是在建表的時候同時建立主鍵索引:
create table mytable( id int not null, username varchar(16) not null, primary key(id) );
當然也可以用 alter 命令。記住:乙個表只能有乙個主鍵。
(4)組合索引
為了形象地對比單列索引和組合索引,為表新增多個字段:
create table mytable( id int not null, username
varchar(16) not null, city varchar(50) not null, age int not null );
為了進一步榨取mysql的效率,就要考慮建立組合索引。就是將 name, city, age建到乙個索引裡:
alter table mytable add index name_city_age (name(10),city,age);
建表時,usernname長度為 16,這裡用 10。這是因為一般情況下名字的長度不會超過10,這樣會加速索引查詢速度,還會減少索引檔案的大小,提高insert的更新速度。
如果分別在 usernname,city,age上建立單列索引,讓該錶有3個單列索引,查詢時和上述的組合索引效率也會大不一樣,遠遠低於我們的組合索引。雖然此時有了三個索引,但mysql只能用到其中的那個它認為似乎是最有效率的單列索引。
建立這樣的組合索引,其實是相當於分別建立了下面三組組合索引:
usernname,city,age usernname,city usernname
點讚 0
mysql各種索引名稱 sql必會系列之索引
031 在已經存在的表上建立唯一索引 1 create unique index index name on table name field name index length asc desc 2 alter table table name add unique index key index...
mysql索引名稱隨便取 MySQL 索引策略
索引 index 是幫助mysql高效獲取資料的資料結構,這種資料結構是需要額外的寫入和儲存為代價來提高表上資料檢索的速度。一旦建立了索引後,資料庫中查詢優化器使用索引來快速定位資料,然後就無需掃瞄表中給定查詢的每一行了。索引本身也很大,不可能全部儲存在記憶體中,一般以索引檔案的形式儲存在磁碟上。聚...
mysq索引類別
索引都是在儲存引擎層面實現的 1.btree索引 使用b tree資料結構建立的索引,索引值都是按順序存放的,儲存引擎不需要再全表掃瞄,取而代之的是從索引的根節點開始掃瞄,根節點存放了子節點的指標,隨著向下層查詢,隨著查詢值和節點值的比較 指標中右節點葉值的上下限 最終找到記錄。btree索引可以選...