为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: 达梦8
【操作系统】:麒麟
【CPU】: 不知道
【问题描述】*:
假如有表tableA, 表中存在200万数据,如下查询SQL:
select A, B, C
from tableA t1
inner join tableB t2 on t1.D = t2.D
where t1.E = xx t1.F = yy
tableA表如何建立索引????
如果仅仅EFD列建立索引则会回表,在压测时候很慢。但是如果在EFDABC建立索引,虽然不会回表了,但是这种合理么?如果tableA表查询ABCGHLJI这么多列时候也要都加到索引里么?
这个数据量很大么,回表正常不会有太大影响才对啊。能看看ET和AUTOTRACE么
如果E、F列条件过滤性很好的话,回表也可以,不会扫描太多数据,如果过滤性不好,就只能通过建立覆盖索引来提高性能了。可以把慢的执行计划发出来看看。
应用页面上列表显示查询时,会带上排序和分页,不会是这样直接查
那位大佬路过给点建议