mysql数据查询优化问题

樱木花道VS康 发布于 05/29 10:56
阅读 146
收藏 0

大家好请教问题,,,

我的场景描述:我有一个表叫Main吧,我们是做统计的,Main中其实也就百万量的数据,大约120万,Main的结构(字段)比如有:

id name age A B C D E F G 等等,,,,

由于业务我每次 A到G的条件都不一样,而且每次查询的结果集数据量也是很大的,

比如:selec id,name from Main where A = 1;可能有七八十万数据满足,,,

我的疑问:

1、查询结果的大小影响查询速度吗??? 还有我发现select 后面的字段少的话查询貌似快了一点,,, 比如:select id 就比select id,name 快,,,

2、这种数据量没有那么大(百万级),但是where字句条件变化的情况如何提高性能呢?索引貌似不能满足所有查询条件,,,

 

加载中
0
Y
YG_FL

1、查询结果的大小会影响查询速度,时间主要消耗在从磁盘读取结果数据,select精确查询降低从磁盘IO读取数据的大小,越小读取的速度越快,同时如果select查询的是索引,可以直接读取,不必从磁盘读取数据,速度更快

2、看A、B、C、D、E、F、G几个字段的离散度高不高,建立联合索引,把能过滤最多数据的索引放在前面,最左前缀原则

0
ZiFzzy
ZiFzzy

这个就看你A-B-C-D-E-F-G 的字段区分度高不高,把区分度高的几个可以做个索引,以及的索引字段的顺序匹配问题。

0
前端大师傅
前端大师傅

1.查询的字段数越少,查询的速度一定越快这个在字段大小相差不多的情况是确定的。像楼主查询ID,和查询ID,Name那一定是ID的速度优于后者,因为数据也要加载到内存中,只查一个字段内存加载变少了自然也就提速了。

2.查询的速度还和字段的类型长度都有关系,可以按下面的方式记忆:

1),定长字段优于非定长字段,

2),而定长的数值类型又优于字符类型。

3),非定长类型做索引的优于不做索引。

4),聚集索引优于非聚集索引。

5),数值类型优于时间类型,时间类型优于字符类型。保存时间时性能最差的是用字符串存储,其次好一点的是时间类型,最好的是时间戳,时间戳用字符串存储比用长整型要慢一些,所以建议用bigint存储时间。

6),索引放致原则,优先放主键聚集索引,因为聚集索引只能在一张表里设置一个字段,尽量在主键。非聚集索引放时间字段。

7),字段平均原则,大字段需要分表,否则影响整体查询速度。即使不选择此字段。

8),联合索引原则,在需要跨字段查询时,可将跨的字段设置联合索引。

9),like原则,需要用到like的字段尽量分表,原则同7。需要用like尽量做全文索引,尽量丢到like。在大数据量环境非常影响性能。

 

0
樱木花道VS康
樱木花道VS康

感谢大家的解惑,只能标记一个最佳,我认为大家都是最佳!谢谢!

返回顶部
顶部