日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

索引创建以及优化_1

發布時間:2024/4/13 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 索引创建以及优化_1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
怎么去創建索引啊,我們先看第一種啊1. 普通索引,所謂的普通索引是什么啊,就是index,比如像這種primary key,還有index,還有unique,這些都可以把它劃分到普通索引當中,他除了有普通索引以外,唯一索引,全文索引,還有一個聚合組合索引,4大索引,普通索引就是index,既不是組件也不是惟一的,那普通索引怎么創建呢,其實是比較簡單的,這是最基本的索引,他沒有任何限制,MYISAM中默認的B-TREE索引,也是我們大多數情況下要用到的索引,也就是我們建索引其實更多的就是建index索引,我們來看他的語法格式是及其簡單的,直接創建, create index [index_name] on [table_name](column(length)),括號括起來是指索引的名字,我們一定要給索引起名字,不僅僅是普通索引,包括我們主鍵索引,唯一性索引,還有組合索引,我們都應該有名字,有名字的好處是什么呢,你未來想刪除索引的時候,他都是根據索引的名字去刪的,明白這個意思吧[table_name]是指在哪個表上創建索引,[column(length)]然后給哪個列創建索引,你看列里給了一個length,那么這個長度表示什么含義呢,你在創建索引的時候,這個長度就是要把這個索引這個列里字段的值取多長放到索引里,如果不寫length,那他就會把這列里所有的數據等長度的塞到索引里,比如說,我現在有name這樣的一個列,然后這個列里有什么值呢,然后我在給name創建索引的時候,我再給name字段沒有寫length,它會把這條數據里的這一列的值全都加在數據里,能明白嗎,那么所帶來的問題是什么呢索引他的存儲空間肯定需要很大,但是實際上我們在找數據的時候,我要找abc的,abc和abab都是以a開頭,那我可以取3位,3位什么意思呢,只把其他的前3位放到索引里,那就可以通過前3位去區分abc和abab,所以索引來給定長度,所帶來的好處,這種索引叫短索引,是可以進一步提升索引檢索的性能,如果沒給length,把整個列都放到里面,這就叫長索引了,我們來試一下,來創建一個最普通的索引,我們先創建一個表,當然你也可以通過命令來創建,id,類型int,然后來一個u_name,varchar,長度20,允許為空,u_age,int類型,這樣一個表就創建好了,這里又一個查看索引的命令,show index from [table_name],那現在在我這個表里,有幾個索引,只有一個,什么索引啦,不是普通索引,唯一性索引,主鍵嗎,我們可以查一下,新建查詢,show index from users;下面會顯示表的索引信息,table是users,Key_name就是PRIMARY,你沒給他起名默認就是PRIMARY作為他的名稱,明白嗎,然后注意看它是用什么來做他的索引的,Index_Type是BTREE類型的,這是主鍵索引比如我們這個name會經常會在where語句后面作為查詢條件,那我是不是可以給這個name加一個索引啊,是吧,但是你能給她加一個主鍵嗎,因為它未來的內容可能會有重復的,所以不能加主鍵索引,也不能加唯一性索引,就得加普通的index索引,那怎么創建呢,有多種情況,首先來看第一個1. 第一個直接創建,create index [索引名] on [表名](column(length));先用直接創建這種方式,這個名字盡量要和可能的關鍵字避免開on后面是哪個表,這個表里給誰建索引啊,create index name_index on users(u_name);運行是不是創建完了,我們是不是把整個列作為索引項了,我們再去show index from user;是不是多了一條數據,這Key_name是不是name_index,往后看,column_name叫u_name,也是BTREE類型索引,這就創建完了,是不是很簡單,我現在想刪除掉索引怎么辦,也非常簡單2.刪除索引,一種是直接刪除法, drop 索引名 on [表名];還有一種是通過修改表的方式,直接刪除法,drop index刪除一個索引,索引名字叫name_index,然后on users這個表,drop index name_index on users;然后我們show index from users;沒了吧,這就是刪除index,剛才我們用的create index方式,還有一種方式是什么呢,是對表修改來添加索引,我們修改表用什么命令來著,用alter,來看一下,他的語法結構也是比較簡單的,alter table修改表,然后表的名字,你要對哪個表進行修改,然后你要修改什么,ADD INDEX添加一個索引,然后索引名稱,和索引列,那么我們用這個命令再來做一個,添加索引,alter table users add index name_index(u_name);然后對他做一個什么樣的操作呢,add index添加索引,索引的名稱叫什么呢,叫name_index,誰擁有這個名字呢,執行也成功了吧,然后再show index from users;是不是一樣有這個東西,是不是還是BTREE類型的,我先把它刪掉,drop index name_index on users;show index from users;沒有了吧,為什么把它刪了呢,剛才我們直接創建和直接修改表創建,所創建的索引都是長索引,長索引是什么含義來的,會把這個列里面所有的值完整的作為索引的一部分,那我們是不是可以建短索引,短索引什么含義呢,就是可以指定長度,把這個值的指定長度加到索引里面,其他的不加,那怎么來建這個短索引呢,這個很簡單,括號加長度,比如是2,alter table users add index name_index(u_name(2));這是什么,只取內容的前兩個字符作為存儲信息的信息列,好不好使呢,我們運行,是不是一樣可以創建,show index from users;你看Sub_part,是不是長度為2,懂了嗎,那么總的來說創建普通索引還是比較簡單的吧3. 直接修改說了,直接刪除說了,還有一個是創建表的時候就可以指定索引,創建表的語句還會不會寫啦,咱們寫一個比如我現在要創建一個什么表呢,我要創建一個Person,然后里面有id字段,里面有p_name字段,有p_age字段,怎么創建,create table創建一個表,然后后面跟一個表名,括號,里面跟著列名,類型,及其特點,比如id,什么類型呢,int類型的,然后是不是可以primary key,是不是還可以自動增長啊auto_incrementcreate table person (id int primary key auto_increment,p_name varchar(40),INDEX (p_name) )

?

總結

以上是生活随笔為你收集整理的索引创建以及优化_1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。