mysql sql优化、查看索引、创建索引
仅在被频繁检索的字段上创建索引。针对大数据量的表创建索引,而不是针对只有少量数据的表创建索引。通常来说,经常查询的记录数目少于表中总记录数据的 15% 时,可以创建索引。这个比例并不绝对,它与全表扫描速度成反比。尽量不要在有大量重复值得字段上建立索引,比如性别字段、季度字段等。
·
1.索引遵循原则
- 仅在被频繁检索的字段上创建索引。
- 针对大数据量的表创建索引,而不是针对只有少量数据的表创建索引。
- 通常来说,经常查询的记录数目少于表中总记录数据的 15% 时,可以创建索引。这个比例并不绝对,它与全表扫描速度成反比。
- 尽量不要在有大量重复值得字段上建立索引,比如性别字段、季度字段等。
2.查看索引格式:
SHOW INDEX FROM <表名> [ FROM <数据库名>]
语法说明如下:
- <表名>:指定需要查看索引的数据表名。
- <数据库名>:指定需要查看索引的数据表所在的数据库,可省略。比如,SHOW INDEX FROM student FROM test; 语句表示查看 test 数据库中 student 数据表的索引。
例如:
show index from t_daily_day_work_plan;
查询结果:
参数说明如下:
3. 创建索引
创建索引的方式有两种:ALTER TABLE ... 和 CREATE INDEX ...
CREATE <索引名> ON <表名> (<列名> [<长度>] [ ASC | DESC])
语法说明如下:
<索引名>
:指定索引名。一个表可以创建多个索引,但每个索引在该表中的名称是唯一的。<表名>
:指定要创建索引的表名。<列名>
:指定要创建索引的列名。通常可以考虑将查询语句中在 JOIN 子句和 WHERE 子句里经常出现的列作为索引列。<长度>
:可选项。指定使用列前的 length 个字符来创建索引。使用列的一部分创建索引有利于减小索引文件的大小,节省索引列所占的空间。在某些情况下,只能对列的前缀进行索引。索引列的长度有一个最大上限 255 个字节(MyISAM 和 InnoDB 表的最大上限为 1000 个字节),如果索引列的长度超过了这个上限,就只能用列的前缀进行索引。另外,BLOB 或 TEXT 类型的列也必须使用前缀索引。ASC|DESC
:可选项。ASC
指定索引按照升序来排列,DESC
指定索引按照降序来排列,默认为ASC
。
例如:
create index index_plan_time
on t_daily_day_work_plan (plan_time DESC);
4.删除索引
ALTER TABLE website
DROP INDEX myIndex;
5.索引类型
MySql常见索引类型有:主键索引、唯一索引、普通索引、全文索引、组合索引
PRIMARY KEY(主键索引)
它是一种特殊的唯一索引,不允许有空值。
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
UNIQUE(唯一索引)
与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。
ALTER TABLE `table_name` ADD UNIQUE (`column`)
INDEX(普通索引)
最基本的索引,没有任何限制
ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
FULLTEXT(全文索引)
仅可用于 MyISAM 表, 用于在一篇文章中,检索文本信息的, 针对较大的数据,生成全文索引很耗时好空间。
ALTER TABLE `table_name` ADD FULLTEXT ( `column` )
组合索引(包含多列的索引,与单行索引相对)
为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原则。
ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
6.索引的缺点
因为需要同时维护索引文件,因此会降低数据更新的速度。如果在大表上创建多种组合索引,索引文件会膨胀很快,占用过多内存。
更多推荐
已为社区贡献4条内容
所有评论(0)