一、索引的简单操作(增删改查)
创建索引
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
[USING index_type]
ON table_name (index_col_name,...)
[UNIQUE|FULLTEXT|SPATIAL]:表示创建索引的类型,分别表示唯一索引、全文索引、空间索引;
[USING index_type]:表示索引的类型,索引类型有BTREE索引和HASH索引。
存储引擎为MyISAM和INNODB的表中只能使用BTREE;
存储引擎为MEMORY和heap的表中可以使用BTREE索引和HASH索引
注意:另一种创建索引语法
ALTER TABLE table_name ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX [index_name] [index_type] (index_col_name,...)
查看索引
SHOW INDEX FROM table_name
删除索引
--删除指定表中指定名称的索引
ALTER TABLE table_name DROP INDEX index_name;
修改索引
在mysql中没有提供修改索引的指令,一般情况下,直接删除原索引,重新建立同名索引即可。
举例:增删改查索引:在那张表上执行add/drop那个索引
//添加索引
CREATE UNIQUE index index_prizecide on bsy_prizeinfo(prizecode);
//查看索引
show index from bsy_prizeinfo;
//删除索引
alter table bsy_prizeinfo drop index index_prizecode
//添加索引
alter table bsy_prizeinfo add UNIQUE index index_prizecode (prizecode);
二、索引类型
1)BTREE索引
2)HASH索引
3)空间索引
4)全文索引
三、索引策略
正确创建和使用索引是实现高性能查询的基础。
1)独立的列:索引列不能使表达式的一部分,也不能是函数的参数。
举例:
explain select * from emp where empno+1=100003;
explain select SQL_NO_CACHE * from emp where TIMESTAMPDIFF(day,hiredate,now())