MySQL性能问题理解

  备注:问题摘抄自慕课网张一勤老师

  为什么 group by 的效率比较低?

    group by 是将数据分组,这其中实际也会涉及到排序的操作。如果你的数据量很大,那么,这个排序过程可能是非常慢的。所以,排序的过程会降低 SQL 语句的执行效率。

    将数据全量查出,在程序中处理,这样好吗?

    这样肯定是不合适的。因为这样做:大数据量的传输很耗时、消耗机器的内存、大数据量的处理本身也非常慢。

    group by的常用优化方案

    效率低的根本原因就是因为数据量大导致的,所以,想要做优化,核心思想就是降低数据量。可以在 group by 之前把需要过滤的数据通过 where 条件给出;给 group by 的相关字段加上索引等等。

    判断一条数据记录是否在一张表中

    这个判断最高效的方式当前是判断主键;如果不能通过主键判断,需要 where 去查询带有索引的字段列;如果需要判断的列没有索引,mysql 是需要扫描数据记录的,效率最低。

哪些字段类型适合加索引 ?哪些字段类型不适合加索引 ?你能解释清楚吗 ?

 其实,对于字符类型,也并不是绝对不能加索引的。数据库常用的索引规范如下:

    1、表的主键、外键必须有索引;

    2、数据量超过300的表应该有索引;

    3、经常与其他表进行连接的表,在连接字段上应该建立索引;

    4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;

    5、索引应该建在选择性高的字段上;

    6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;

    7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替;

    8、频繁进行数据操作的表,不要建立太多的索引;

    9、删除无用的索引,避免对执行计划造成负面影响。

你可能感兴趣的:(mysql)