創建高性能的索引*
什麼是索引? 索引是幫助MySQL高效獲取數據的數據結構。索引是數據結構!
#創建索引
CREATE [UNIQUE] INDEX indexName ON mytable(columname(length));
ALTER mytable ADD [UNIQUE] INDEX [indexName] ON(columnname(length));
#ALTER 添加索引
ALTER TABLE tb_name ADD PRIMARY KEY (column_list);#添加主鍵
ALTER TABLE tb_name ADD UNIQUE index_name(column_list);#唯一索引,可爲NULL
ALTER TABLE tb_name ADD INDEX index_name(column_list);#普通索引,索引值可出現多次
ALTER TABLE tb_name ADD FULL TEXT index_name(column_list);#全文索引
#刪除索引
DROP INDEX [indexName] ON mytable;
#查看索引
SHOW INDEX FROM table_name\G;
-
索引分類
-
單值索引 一個索引只包含單個列,如主鍵
-
唯一索引 索引列的值必須唯一,允許空值
-
複合索引
-
-
索引的類型
- B-Tree /B+Tree MyISAM InnoDB
- 哈希索引 Memory
- 空間數據索引R-Tree MyISAM
- 全文索引
-
索引優劣
- 優點
- 提高檢索的效率,降低數據庫I/O成本
- 通過索引列對數據進行排序,降低CPU消耗
- 劣勢
- 索引也是一張表,保存了主鍵與索引字段,佔用空間
- 會降低表的更新速度
- 優點
-
高性能索引策略
- 獨立的列
- 前綴索引 MySQL無法使用前綴索引做ORDER BY、GROUP BY和覆蓋掃描
- 多列索引
- 合適的索引列順序 選擇性最高的列放到索引最前列
- 聚簇索引 索引和數據儲存在一起
//。。。