索引的一些思考

2021-09-01 22:41:56 字數 1335 閱讀 1651

一、索引是什麼?

答:索引是一種資料結構,它和表中的列有對應關係,索引是有序的,但資料的物理排序不一定是按照索引的順序排列的。如果是按照索引排序的,則稱為聚集索引;如果不是,則稱之為非聚集索引。由於聚集索引會影響到資料的物理排序,所以每個表只能有乙個聚集索引,但可以有多個非聚集索引。

例子解釋:

1、create table t_student(

code varchar(20),

name varchar(10)

)create [color=red]clustered [/color]index index_t_student on t_student(name)

該錶資料行會按name的順序排序

2、create table t_student(

code varchar(20),

name varchar(10)

)create [color=red]clustered [/color]index index_t_student on t_student(code)

該錶資料行會按code的順序排序

3、create table t_student(

code varchar(20),

name varchar(10)

)create index index_t_student on t_student(name)

該錶資料行並不會按name的順序排序

二、為什麼要建索引?

索引就像字典中的目錄一樣,目錄是有順序的,因此索引也是有順序的。通過目錄很快的定位到要查詢的字的位置。因為索引的有序性,使得查詢索引是很快的,從而加快查詢索引對應的資料。

三、什麼情況下適合建索引

1、建聚集索引

1)表的查詢頻率遠遠大於更新頻率

2)字段值唯一或重複值很少

3)經常用作為查詢條件的字段,比如欄位用在算符:">"、"<"、"="、"in"兩邊的字段

,但對於"like"不一定適合建立索引。

4)經常用作表連線的字段

5)經常用作排序、分組的字段

2、建非聚集索引

基本上和聚集索引相同,對於範圍查詢的字段,使用聚集索引要更快於非聚集索引

如:select * from t where a>1 則應該對a建聚集索引。

ps:1、檢視索引的儲存過程:exec sp_helpindex 表

2、向sqlserver插入200000條資料:

無索引:1m26s

有索引:2m07s

查詢 select * from t_organization where code=29567:

無索引:1s

有索引:0.000..s

學習MYSQL索引後的一些思考

create index方式,用於建立表的時候 普通的索引的建立 create index 自定義 索引名 on 資料表 字段 復合索引的建立 create index 自定義 索引名 on 資料表 字段,欄位.alter table方式,用於建表完成後新增索引 普通索引 alter table 表...

回溯的一些思考

堆疊中有元素abcdef,每次出棧可以選擇乙個或者兩個元素棧,當有兩個元素出棧時可以選擇其中乙個重新入棧,當棧為空時,總共有多少種出棧方法?對於本題目的一些思考,對於回溯問題,要記得恢復現場。include include include using namespace std queue vect...

生活的一些思考

這裡只是生活中一些零碎的想法,隨時都有可能飄散而去,在此也只是記錄一下,寫到 算 並無主題。生活,這個凌駕於生存而上的活著。對我來說,這個詞,或許只是心靈上的企及。生存,這個滿足於人的最低基本需求的定義,食能果腹,衣能蔽體,也僅此而已吧。而,在生存之上,我們才會考慮,如何食的更有品味,如何穿的更得體...