8.6 索引
索引需要討論的如下:1.索引的類型2.定義索引在表的創建時3.使用初始化鍵值4.增加索引到存在的表使用alter table或create index 3.刪除索引alter table或者drop index
4.選擇索引算法
8.6.1 索引的類型
1.鍵值primary key 是一個索引
2.唯一索引和鍵值索引是相似的,但是允許為NULL
3.一個非唯一的索引是一個索引任何的值可能發生多次
有些專門的索引:
1.FULLTEXT索引:專門用于文本搜索
2.SPTIAL索引:用于spatial數據類型
創建索引
使用index語句創建索引,創建唯一索引使用unique代替index。
8.6.2.2 creating and using primary keys
create table people(
? ?last_name char(30) not null;
? ?first_name char(30) not null;
? ?primary key (last_name,first_name));
8.6.2.3 命名索引
對于所有類型的而不是primarykey ,可以命名一個索引通過包含名字在列名前;例如,
Index NmaeIndex (LastName,FirstName),
Unique IDIndex (ID)
對于一個primarykey 無需提供名字因為名字總是primary
8.6.2.4 ?增加索引到存在的表
使用alter語句或者create來給存在的表增加索引:
alter table HeadOfstate ADD PRIMARY KEY (ID);
alter table HeadOfState ADD INDEX (LastName,FirstName);
create unique index IDIndex ON HeadOfState (ID);
8.6.3 選擇索引算法
如果有唯一索引在一個內存表上,你應該創建他們作為HASH索引。以下是等同的:
cratetable lookup(
? id INT,
? INDEX using HASH(id)
)ENGINE=MEMORY;
create table lookup(
? id INT,
?INDEX(id))Engine=Memory;
對于memroy表,對于數值的比較使用btree算法 如下:
index using btree(id)
8.7 刪除索引
alter table headofstate drop primary key;
alter table headOfState drop index nameIndex;
drop index nameindex on t;
drop index 'primary' on t;
8.8 獲取表和indexmetadata
select * from information_schema.tables?
? ?where table_schema='world'
? and table_name='city'
可以展示數據庫中的表:
show tables from world;
//描述 describe countyLanguage;
show index from country\G
總結
- 上一篇: 8.2.4临时表和正式表
- 下一篇: 9.2.1 Renaming Retri