Mysql-索引

先建立表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;  -->刪除主鍵
相關文章
相關標籤/搜索