Loading

摘要: 衡量查询开销的指标 响应时间 扫描的行数 返回的行数 它们大致反映了MySQL在内部执行查询时,需要访问多少数据,可以大概推算出查询运行的时间 响应时间 响应时间 = 服务时间 + 排队时间 使用快速上限估计法,来查询响应时间 扫描的行数和返回的行数字 分析查询时,查看该查询扫描的行数很有帮助,理想 阅读全文
posted @ 2021-10-26 14:59 BigBender 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 是否向数据库请求了不需要的数据 查询不需要的数据 一个常见的错误是误以为MySQL只返回需要的数据,实际上先返回全部结果集再计算 最有效的解决办法是在查询后面加上LIMIT 多表关联时返回全部列 在 JOIN 操作时返回了所有表的列 只需要一个表的列 重复查询相同的数据 初次查询的时候将数据缓存起来 阅读全文
posted @ 2021-10-26 14:00 BigBender 阅读(32) 评论(0) 推荐(0) 编辑
摘要: EXPLAIN看范围查询,从type列来看是range 对于范围条件,MySQL无法使用范围列后面的其他索引列,但是对于多个等值条件查询没有这个限制 可以通过程序添加一列将范围查询转化为等值查询,从而避免索引失效 阅读全文
posted @ 2021-10-26 10:17 BigBender 阅读(545) 评论(0) 推荐(0) 编辑
摘要: MySQL有两种方式可以生成有序的结果,排序或者索引顺序扫描 explain出来的type列值为 index,说明MySQL使用了索引扫描做排序 扫描索引本身很快,只需要从一条索引记录移动到紧接的另一条索引记录 但如果索引不能覆盖查询所需要的全部列 必须每扫描一条索引记录都回表查询一次对应的行,这种 阅读全文
posted @ 2021-10-26 09:41 BigBender 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 用IN组合索引触发WHERE最左前缀 假如(sex,country,age),(sex,country,region,age)和(sex,country,region,city,age) 这样的组合索引,可以通过IN(),来重用索引而不是建立大量新的组合索引 这种技巧不能滥用 每额外增加一个IN() 阅读全文
posted @ 2021-10-26 09:34 BigBender 阅读(36) 评论(0) 推荐(0) 编辑