sql ORDER BY 多个字段,排序变慢几十倍,求解?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql ORDER BY 多个字段,排序变慢几十倍,求解?相关的知识,希望对你有一定的参考价值。

数据表7万+条数据,sql 单个字段 ORDER BY都是8-10毫秒,但2个字段并列查询排序速度慢了几十倍,倒是是什么问题?其中houseid 为主键,push 有索引。查询语句及耗时如图所示。

SQL 中使用order By后,查询慢,加上主键 和 需要排序的字段组合排序 速度有很大的提升
在SQL Server查询数据测试,数据约三万条, 数据字段以时间倒序排序,
sql:
select ID, column1,column2,column3,record_date from table where ...... order by record_date desc
此时查询数据需要15秒左中 ,将orderby 修改为 order by ID desc,record_date desc 后,查询的数据一秒不到即可查询出来

在linq中,排序的时候,一定要用new 排序的对象,不然ID 将不会被加入到SQL中

linq:
var t = from a in t where ......select a;
t = t.orderby(t=>t.ID).orderby(t=>t.record_date) 此处的ID在解释成SQL时,不会在SQL中
应写为:
t = t.orderby(t=>newt.ID,t.record_date)
参考技术A 可以把需要group by的字段加上联合索引,需要注意前后顺序:搜索结果范围小的放前面,范围大的在后,如:
ALTER TABLE h_house ADD INDEX idx1(push,hourseid);

以上是关于sql ORDER BY 多个字段,排序变慢几十倍,求解?的主要内容,如果未能解决你的问题,请参考以下文章

若sql语句中order by指定了多个字段,则怎么排序?

sql语句中order by 多个字段同时排序的应用

若sql语句中order by指定了多个字段,则怎么排序?

mysql使用order by排序查询导致sql变慢

若sql语句中order by指定了多个字段,则怎么排序?

sql 排序,order by 按时间