先建立表mysql
mysql> CREATE TABLE test( -> id INT, -> username VARCHAR(16), -> city VARCHAR(16), -> age INT -> );
1.普通索引sql
是最基本的索引,它沒有任何的限制。有如下幾種建立方式搜索引擎
(1)直接建立索引:code
CREATE INDEX index_name ON table(column(length))
實例:
CREATE INDEX test_username ON test (username(10)); -->單列索引
索引
indexName爲索引名,mytable表名,username和city爲列名,10爲前綴長度,即索引在該列從最左字符開始存儲的信息長度,單位字節ci
若是是CHAR,VARCHAR類型,前綴長度能夠小於字段實際長度;若是是BLOB和TEXT類型,必須指定 前綴長度,下同。it
(2)修改表結構的方式添加索引table
ALTER TABLE table_name ADD INDEX index_name ON (column(length)) ALTER TABLE test ADD INDEX test_username(username(10));
此處 indexName 索引名可不寫,系統自動賦名 username ,username_2 ,username_3,...test
(3)建立表的時候同時建立索引搜索
mysql> CREATE TABLE test( -> id INT, -> username VARCHAR(16), -> city VARCHAR(16), -> age INT, -> INDEX test_username (username(10)) -> );
2.惟一索引
與前面的普通索引相似,不一樣的就是:索引列的值必須惟一,但容許有空值。若是是組合索引,則列值的組合必須惟一。它有如下幾種建立方式:
(1)建立惟一索引
CREATE UNIQUE INDEX indexName ON table(column(length))
實例:
CREATE UNIQUE INDEX test_city ON test(city(10));
(2)修改表結構
ALTER TABLE table_name ADD UNIQUE indexName ON (column(length))
(3)建立表的時候直接指定
mysql> CREATE TABLE test( -> id INT, -> username VARCHAR(16), -> city VARCHAR(16), -> age INT, -> UNIQUE test_username (username(10)) -> );
3.主鍵索引
是一種特殊的惟一索引,一個表只能有一個主鍵,不容許有空值。通常是在建表的時候同時建立主鍵索引: 主鍵索引無需命名,一個表只能有一個主鍵。主鍵索引同時但是惟一索引或者全文索引,但惟一索引或全文索引不能共存在同一索引 (1)修改表結構建立 ALTER TABLE test ADD PRIMARY KEY (id); (2)建立表的時候直接指定
mysql> CREATE TABLE test(
-> id INT,
-> username VARCHAR(16),
-> city VARCHAR(16),
-> age INT,
-> PRIMARY KEY(id)
-> );
```
4.組合索引
指多個字段上建立的索引,只有在查詢條件中使用了建立索引時的第一個字段,索引纔會被使用。使用組合索引時遵循最左前綴集合
ALTER TABLE test ADD INDEX test_username_city (username,city);
5.全文索引
主要用來查找文本中的關鍵字,而不是直接與索引中的值相比較。fulltext索引跟其它索引大不相同,它更像是一個搜索引擎,而不是簡單的where語句的參數匹配。fulltext索引配合match against操做使用,而不是通常的where語句加like。它能夠在create table,alter table ,create index使用,不過目前只有char、varchar,text 列上能夠建立全文索引。值得一提的是,在數據量較大時候,現將數據放入一個沒有全局索引的表中,而後再用CREATE index建立fulltext索引,要比先爲一張表創建fulltext而後再將數據寫入的速度快不少。
(1)直接建立
CREATE FULLTEXT INDEX full_username ON test (username);
(2)修改表結構添加全文索引
ALTER TABLE test ADD FULLTEXT INDEX full_city (city);
(3)建立表的時候直接指定
mysql> CREATE TABLE test( -> id INT, -> username VARCHAR(16), -> city VARCHAR(16), -> age INT, -> FULLTEXT indexName (username(10)) -> );
6.查看索引
第一種:show create table test; 第二種:SHOW INDEX FROM test \G;
7.刪除索引
DROP INDEX index_name ON table; ALTER TABLE test DROP PRIMARY KEY; -->刪除主鍵