mysql查询优化
1.查询性能低下最基本的原因是访问的数据太多。访问了太多的行,有时候也可能是访问了太多的列。
2.请求超过实际需要的数据:1.查询不需要的记录 limit杜绝2.多表关联时返回全部列 3.总是取出全部列 无法完成索引覆盖这类优化,但并不总是坏事
3.重复查询相同的数据,注意缓存
响应时间:服务时间+排队时间(等待I/O,锁等)
扫描的行数:
1.并不完美的指标:不是所有的行的访问代价都是相同的,比如 较短的行的访问速度更快,内存中的行也比磁盘中的行的访问速度要快得多
2.访问类型:在explain语句中的type列反应了访问类型。访问类型有很多种,从全表扫描到索引扫描,范围扫描,唯一索引查询,常数引用等。速度从慢到快,扫描行数从小到大。
一般mysql能够使用如下三种方式应用where条件,从好到坏依次为:
1.在索引中使用where条件来过滤不匹配的记录,这是在存储引擎层完成的。
2.使用索引覆盖扫描(在Extra列中出现了Using index)来返回记录,直接从索引中过滤不需要的记录并返回命中的结果。这是在mySql服务器层完成的,但无须再回表查询记录
3.从数据表中返回数据,然后过滤不满足条件的记录(在Extra列中出现Using where)。这在mysql服务器层完成,mysql需要先从数据表读出记录然后过滤。
3.返回的行数
相关推荐
ribavnu 2020-11-16
要啥自行车一把梭 2020-11-12
vitasfly 2020-11-12
康慧欣 2020-09-10
liuweiq 2020-09-09
moyekongling 2020-11-13
Ida 2020-09-16
CoderToy 2020-11-16
emmm00 2020-11-17
王艺强 2020-11-17
bianruifeng 2020-11-16
wangshuangbao 2020-11-13
苏康申 2020-11-13
vivenwan 2020-11-13
云中舞步 2020-11-12
aydh 2020-11-12
kuwoyinlehe 2020-11-12
minerk 2020-11-12