《Mysql應用mysql索引創建、刪除與查看》要點:
本文介紹了Mysql應用mysql索引創建、刪除與查看,希望對您有用。如果有疑問,可以聯系我們。
MYSQL實例1,mysql索引作用
MYSQL實例?? 在索引列上,除了上面提到的有序查找之外,數據庫利用各種各樣的快速定位技術,能夠大大提高查詢效率.特別是當數據量非常大,查詢涉及多個表時,使用索引往往能使查詢速度加快成千上萬倍.
MYSQL實例?? 例如,有3個未索引的表t1、t2、t3,分別只包含列c1、c2、c3,每個表分別含有1000行數據組成,指為1~1000的數值,查找對應值相等行的查詢如下所示.
MYSQL實例select c1,c2,c3 from t1,t2,t3 where c1=c2 and c1=c3
MYSQL實例?? 此查詢結果應該為1000行,每行包含3個相等的值.在無索引的情況下處理此查詢,必須尋找3個表所有的組合,以便得出與where子句相配的那些行.而可能的組合數目為1000×1000×1000(十億),顯然查詢將會非常慢.
MYSQL實例?? 如果對每個表進行索引,就能極大地加速查詢進程.利用索引的查詢處理如下.
MYSQL實例(1)從表t1中選擇第一行,查看此行所包含的數據.
MYSQL實例(2)使用表t2上的索引,直接定位t2中與t1的值匹配的行.類似,利用表t3上的索引,直接定位t3中與來自t1的值匹配的行.
MYSQL實例(3)掃描表t1的下一行并重復前面的過程,直到遍歷t1中所有的行.
MYSQL實例?? 在此情形下,仍然對表t1執行了一個完全掃描,但能夠在表t2和t3上進行索引查找直接取出這些表中的行,比未用索引時要快一百萬倍.
MYSQL實例?? 利用索引,mysql加速了where子句滿足條件行的搜索,而在多表連接查詢時,在執行連接時加快了與其他表中的行匹配的速度.
MYSQL實例2.? 創建mysql索引
在執行create table語句時可以創建索引,也可以單獨用create index或alter table來為表增加索引.
MYSQL實例1.alter table
alter table用來創建普通索引、unique索引或primary key索引.
alter table table_name add index index_name (column_list)
alter table table_name add unique (column_list)
alter table table_name add primary key (column_list)
其中table_name是要增加索引的表名,column_list指出對哪些列進行索引,多列時各列之間用逗號分隔.索引名index_name可選,缺省時,mysql將根據第一個索引列賦一個名稱.另外,alter table允許在單個語句中更改多個表,因此可以在同時創建多個索引.
MYSQL實例2.create index
create index可對表增加普通索引或unique索引.
create index index_name on table_name (column_list)
create unique index index_name on table_name (column_list)
table_name、index_name和column_list具有與alter table語句中相同的含義,索引名不可選.另外,不能用create index語句創建primary key索引.
MYSQL實例3.mysql索引類型
MYSQL實例在創建索引時,可以規定索引能否包含重復值.如果不包含,則索引應該創建為primary key或unique索引.對于單列惟一性索引,這保證單列不包含重復的值.對于多列惟一性索引,保證多個值的組合不重復.
MYSQL實例primary key索引和unique索引非常類似.事實上,primary key索引僅是一個具有名稱primary的unique索引.這表示一個表只能包含一個primary key,因為一個表中不可能具有兩個同名的索引.
MYSQL實例對students表在sid上添加primary key索引.
alter table students add primary key (sid)
MYSQL實例4.? 刪除mysql索引
可利用alter table或drop index語句來刪除索引.類似于create index語句,drop index可以在alter table內部作為一條語句處理,語法如下.
drop index index_name on talbe_name
alter table table_name drop index index_name
alter table table_name drop primary key
其中,前兩條語句是等價的,刪除掉table_name中的索引index_name.
MYSQL實例第3條語句只在刪除primary key索引時使用,因為一個表只可能有一個primary key索引,因此不需要指定索引名.如果沒有創建primary key索引,但表具有一個或多個unique索引,則mysql將刪除第一個unique索引.
MYSQL實例如果從表中刪除了某列,則索引會受到影響.對于多列組合的索引,如果刪除其中的某列,則該列也會從索引中刪除.如果刪除組成索引的所有列,則整個索引將被刪除.
MYSQL實例5.查看mysql索引
mysql> show index from tblname;
mysql> show keys from tblname;
· table
表的名稱.
MYSQL實例· non_unique
如果索引不能包括重復詞,則為0.如果可以,則為1.
MYSQL實例 · key_name
MYSQL實例 索引的名稱.
MYSQL實例 · seq_in_index
MYSQL實例 索引中的列序列號,從1開始.
MYSQL實例 · column_name
MYSQL實例 列名稱.
MYSQL實例 · collation
MYSQL實例 列以什么方式存儲在索引中.在mysql中,有值‘a’(升序)或null(無分類).
MYSQL實例 · cardinality
MYSQL實例索引中唯一值的數目的估計值.通過運行analyze table或myisamchk -a可以更新.基數根據被存儲為整數的統計數據來計數,所以即使對于小型表,該值也沒有必要是精確的.基數越大,當進行聯合時,mysql使用該索引的機會就越大.
MYSQL實例?sub_part
MYSQL實例如果列只是被部分地編入索引,則為被編入索引的字符的數目.如果整列被編入索引,則為null.
· packed
MYSQL實例指示關鍵字如何被壓縮.如果沒有被壓縮,則為null.
· null
MYSQL實例如果列含有null,則含有yes.如果沒有,則該列含有no.
· index_type
MYSQL實例用過的索引辦法(btree, fulltext, hash, rtree).
· comment
mysql索引類型區別分析
mysql索引的類型與優缺點
mysql索引優化注意問題
mysql索引優化實例解析
mysql索引優化應用實例
Mysql索引分類與優化
MySql索引優化注意要點
Mysql索引優化辦法解析
深入理解MySQL索引與優化
歡迎參與《Mysql應用mysql索引創建、刪除與查看》討論,分享您的想法,維易PHP學院為您提供專業教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/8904.html