003—索引
#======================================
#平臺:windows7 ? ? ? ?
#MYsql版本:mysql-5.5.62-winx64(安裝版)
#MYsql工具:SQLyog?-?64?bit、Navicat?Premium?12
工具包地址:https://pan.baidu.com/s/17SOAmwcgOw9hYtTzDb9-Tw
#======================================
?
?
優點 | 提高查詢速度 |
缺點 | 過多使用會占用較多磁盤空間,同時卻會降低更新表的速度 |
?
INNODB和MyISAM支持BTREE索引,MEMORY存儲支持哈希索引,三者默認都是BTREE索引。
?
普通索引
?
創建索引的條件:
l?經常被查詢的字段(where子句)
l?分組的字段(goup?by)
l?存在依賴關系的子表額父表的聯合查詢
l?設置唯一完整性約束的字段
?
創建索引的方式:(三種方式:創建表之前,創建表之后和通過Alter?table創建)
1、創建表之前
?
CREATE?TABLE?t_dept(
deptno?INT,
dname?VARCHAR(20),
loc?VARCHAR(20),
INDEX?index_deptno(deptno)
);
//建表時,在deptno上創建索引
?
通過SHOW?CREATE?TABLE?t_dept?\G;
或者EXPLAIN?SELECT *?FROM?t_dept?WHERE?deptno=1\G;
可以查看
?
2、創建表之后(常用)
?
語法:CREATE?INDEX?indexName?ON?mytable(username(LENGTH));?
?
注意:如果是CHAR,VARCHAR類型,length可以小于字段實際長度;如果是BLOB和TEXT類型,必須指定?length。
?
示例:CREATE?INDEX?index_deptno?ON?t_dept(deptno);?
?
3、通過Alter?table創建(修改表結構,添加索引)
?
例子:ALTER?TABLE?t_dept?ADD?INDEX?index_deptno(deptno);
唯一索引
特點:索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。可以更快地查詢記錄。
?
創建唯一索引:
1、CREATE?UNIQUE?INDEX?indexName?ON?mytable(username(length));?
示例:CREATE?UNIQUE?INDEX?index_deptno?ON?t_dept(deptno);
?
2、CREATE?TABLE?t_dept(
deptno?INT?UNIQUE,
dname?varchar(20),
loc?varchar(40),
????unique?index?index_deptno(deptno)
);
?
3、ALTER?table?mytable?ADD?UNIQUE?INDEX?索引名(字段名(length))
示例:ALTER?table?t_dept?ADD?UNIQUE?INDEX?index_deptno(deptno);
?
?
全文索引
特點:主要關聯char/varchar/text字段,便于快速查詢數據量大的字符串字段。
?
CREATE?FULLTEXT?INDEX?索引名?ON?表名(字段名(長度))
?
?
刪除索引
語法:DROP?INDEX?index_name?ON?table_name;?
?
?
顯示索引
可以使用?SHOW?INDEX?命令來列出表中的相關的索引信息。可以通過添加?\G?來格式化輸出信息。
?
mysql>?SHOW?INDEX?FROM?table_name\G;
?
轉載于:https://blog.51cto.com/6854290/2327580
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
- 上一篇: hdfs写并发问题
- 下一篇: 实现一个bind函数