oracle怎么优化查询语句,查询语句优化(oracle查询语句优化)

查询语句优化(oracle查询语句优化)

2020-07-24 11:25:58

共10个回答

1尽可能建立索引,包括条件列,连接列,外键列等2尽可能让where中的列顺序与复合索引的列顺序一致3尽可能不要select*,而只列出自己需要的字段列表4尽可能减少子查询的层数5尽可能在子查询中进行数据筛选

65744a5b3093ee291710c8af8ce3f851.png

1、查列表时,尽量把要查的字段查出,selectid,namefrom这样比select*from效率高点.2、一个页面有很多List要查,而这些List又属于同一个表,只是条件不同,可以用or将所有的条件放在一个语句中,查出List,再用if根据条件判断封装不同List,这将很多个数据库链接转化成了一个数据库链接,hibernate只要创建一个sessionfactory,效率比同时查多个语句快.3、尽量把需要的字段放在同一张表上,这和第二条类似.

8c605706bd1fc47480938f26492f92e3.png

1SQL查询语句的重写,对于一个查询可以用多种查询语句实现,但不同查询语句的数据库执行计划是不同的,一旦不能够使用索引或造成较大的内存占用会导致性能下降,因此需要对查询语句进行重写优化,最典型的例子就是notin语句使用外连接方式实现来进行优化2创建合理的索引结构,根据查询语句的中查询条件,在关系表上建立相应的索引,如B+树索引和hash索引3修改程序业务逻辑,有些功能如果使用SQL语句实现,不但SQL语句复杂,还将导致数据库的负担增加,因此可以将有些数据操作的业务逻辑放到应用层进行实现,就是通过java编程实现4修改数据库服务器相关参数,优化服务器性能

4b007916bcf9f63b0c4c999d7f54cd97.png

最外层的SQLSELECT语句里面的条件,你不要全部套进去,应该先把条件查出来,然后组建最外层SQL语句.简单来说,就是将里面的SELECT语句查出来的结果保存到变量中,然后再来将条件整合,组成最外层SQL语句.LEFT,它并不是加快查询速度,它只不过加快结果集返回的速度.实际上,你并不能感觉到这速度的提高.不过我们还是建议,当你查询很长字符串时(比如说记录的标题)在页面中显示,可以使用LEFT在SQL服务端进行字符截取.

01e3be53cd7d0e8e9214b4b1dafb5d2e.png

可以通过如下方法来优化查询1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持.数据量(尺寸)越

217e470033d7c98011a10d902da5fab2.png

1、适当的建立索引2、规范查询语句3、sql语句中尽量用参数,以便使用计划4、拆分表,表分区

33dd8f1ad446c375b7aa9dbd351fa014.png

(有关tsql语句查询所产生的磁盘活动量)--显示有关由transact-sql语句生成的磁盘活动量的信息setstatisticsioon--关闭有关由transact-sql语句生成的磁盘活动量的信息set

70e31569484cc13390b3bd12f6e55e25.png

未经测试,仅供参考速度不知是否有优化a,b,c临时代表各字段名以下语句以mssql为例,估计与mysql有出入SELECT*FROM(selecta+b+casqueryText,a,b,cfromfang_sale)linshibiaowherequeryTextlike'%$sss%'andsale_qyLIKE'%$sale_qy%'andsale_hxLIKE'%$sale_hx%'ORDERBYsidDESC

2d3739e9f47768fc2022d0d7507d6a37.png

1、深入理解数据库的工作原理和数据存储的方式,不同的数据库的工作原理是不同6、sql语句只是性能优化的简单方面,性能优化是从整体应用架构开始体现的,优化

4fac67c2fef6e407ba48183846674837.png

多表连接查询,速度肯定会慢,可以优化sql语句,建立索引,或者使用存储过程等.

61d1575076227364d58558c7035602aa.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值