一、索引是什麼?
答:索引是一種資料結構,它和表中的列有對應關係,索引是有序的,但資料的物理排序不一定是按照索引的順序排列的。如果是按照索引排序的,則稱為聚集索引;如果不是,則稱之為非聚集索引。由於聚集索引會影響到資料的物理排序,所以每個表只能有乙個聚集索引,但可以有多個非聚集索引。
例子解釋:
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...
生活的一些思考
這裡只是生活中一些零碎的想法,隨時都有可能飄散而去,在此也只是記錄一下,寫到 算 並無主題。生活,這個凌駕於生存而上的活著。對我來說,這個詞,或許只是心靈上的企及。生存,這個滿足於人的最低基本需求的定義,食能果腹,衣能蔽體,也僅此而已吧。而,在生存之上,我們才會考慮,如何食的更有品味,如何穿的更得體...