mysql返回数据量超过全表的30%

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql返回数据量超过全表的30%相关的知识,希望对你有一定的参考价值。

参考技术A 3. mysql 索引命中规则及优化
1.什么是索引
“索引(在mysql中叫键 key),是存储引擎快速找到记录的一种数据结构。” --- 《高性能MySQL》,例如innodb引擎使用的就是B+树。

2.索引类型
命令:show index from table_name; 查看索引详情。

主键索引 PRIMARY KEY: 一种特殊的唯一索引,不允许为null,一般建表时会创建主键,若不设置主键,
默认会为每一行生成row_id,查询时row_id不会当作索引使用,所以建表时,建议设置主键。
唯一索引 UNIQUE:唯一索引列的值必须唯一,但允许有空值(一般表字段建议设置为 not null)。如果是组合索引,组合值必须唯一。
可以通过ALTER TABLE table_name ADD UNIQUE (column);创建唯一索引;
可以通过ALTER TABLE table_name ADD UNIQUE (column1,column2);创建唯一组合索引;
普通索引 INDEX:这是最基本的索引,它没有任何限制。可以通过ALTER TABLE table_name ADD INDEX index_name (column);创建普通索引;
组合索引 INDEX:即一个索引包含多个列,多用于避免回表查询。可以通过ALTER TABLE table_name ADD INDEX index_name(column1,column2, column3);创建组合索引
全文索引 FULLTEXT:也称全文检索,是目前搜索引擎使用的一种关键技术。可以通过ALTER TABLE table_name ADD FULLTEXT (column);创建全文索引
索引一经创建不能修改,如果要修改索引,只能删除重建。可以使用
DROP INDEX index_name ON table_name;删除索引。

3.索引设计原则
1)适合索引的列 出现在where,select子句
2)基数(整个集合中不同的个数)较小的类,索引效果较小,没必要建立索引,例如性别
3)使用短索引,如果长字段列建立索引,建议使用前缀索引,前缀的的位数,可以从区分度和节约索引空间考量
4)不可过度索引,结合业务适量使用。索引需要额外的磁盘空间,同时查询时会加载到内存中。在修改表时会修改甚至重

以上是关于mysql返回数据量超过全表的30%的主要内容,如果未能解决你的问题,请参考以下文章

MySQL大数据量分页查询方法及其优化

MySQL大数据量分页查询方法及其优化

mysql 全表扫描场景

造成MySQL全表扫描的原因

mysql全表遍历为啥耗时

MySQL小技能