mysql查询优化疑惑

小小丁灬 发布于 2016/09/22 10:18
阅读 268
收藏 0

首先有点不明白全表扫描的概念,例如现在有个 user 表, 字段分别是  id,name,age

select * from user where name='dingding'

这会不会全表扫描?全表扫描指的是 3个字段都要扫描还是就去扫描 name 字段?

还看到个查询的优化,对于多张大数据量(这里几百条就算大了)的表JOIN,要先分页再JOIN,否则逻辑读会很高,性能很差。这应该怎么做?

加载中
0
lieefu
lieefu
只扫描 name字段,如果对name字段建立了索引,就不会全表数据扫描
0
喂码呢
喂码呢

所谓的“全表扫描”指的是要逐行读取数据,然后判断是否满足where条件,如果满足放到返回结果列表里,这里的扫描其实就是读取加判断,因为mysql是行存储的而非列存储的,所以不可能仅仅读取name字段的。

对于数据量很小的表,全表扫描也能接受,如果需要优化的话:

1. where条件字段加索引;

2. 对于返回结果数明确只有1条的加上limit 0, 1

0
艾斯_韩
艾斯_韩

数据库的最小数据存储单位是页,一个页里面有一条或者多条数据(相当于一个房间里面住着多个人)数据库全表扫描就是扫这个表的所有数据页。

,对于多张大数据量(这里几百条就算大了)。。。。。你这是少了个万字吗?几百条数据让开发一次全查出来缓存在服务器缓存上,查个毛数据库啊,几百条

返回顶部
顶部