
你的SQL中使用了好多 in 关键字,效率肯定不高了,例如下面的SQL
SELECT COUNT(p.id) pstn_totalnumFROM port p
WHERE p.device_id in (SELECT de.id
FROM device de
WHERE de.local_net_id = 810
AND de.sub_type = 2001)
你完全可以不使用 in 关键字,如:
SELECT COUNT(p.id) pstn_totalnumFROM port p, device de
WHERE p.device_id = de.id
and de.local_net_id = 810
and de.sub_type = 2001
都是同样的结果,但效率肯定是不一样的,device 符合条件的数据越多,效率越慢,至于上面的一些SQL,肯定还有优化的地方,比如 exists 关键字内部的SQL,效率也不会高,根据逻辑看看有没有需要优化的地方。
1 SQL查询语句的重写,对于一个查询可以用多种查询语句实现,但不同查询语句的数据库执行计划是不同的,一旦不能够使用索引或造成较大的内存占用会导致性能下降,因此需要对查询语句进行重写优化,最典型的例子就是not in语句使用外连接方式实现来进行优化2 创建合理的索引结构,根据查询语句的中查询条件,在关系表上建立相应的索引,如B+树索引和hash索引
3 修改程序业务逻辑,有些功能如果使用SQL语句实现,不但SQL语句复杂,还将导致数据库的负担增加,因此可以将有些数据 *** 作的业务逻辑放到应用层进行实现,就是通过java编程实现
4 修改数据库服务器相关参数,优化服务器性能
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)