sql中优化查询

1、在大部分情况下,where条件语句中包含or、not,SQL将不使用索引;可以用in代替or,用比较运算符!=代替not。

2、在没有必要显示不重复运行时,不使用distinct关键字,避免增加处理时间。

3、当使用and运算符查找某个范围内的数据时,一般不使用索引,可以用between代替。

总之,尽量少用and、not、or还有distinct。

时间: 2024-10-05 04:58:58

sql中优化查询的相关文章

Sql server2005 优化查询速度50个方法小结

Sql server2005 优化查询速度50个方法小结 Sql server2005优化查询速度51法查询速度慢的原因很多,常见如下几种,大家可以参考下. I/O吞吐量小,形成了瓶颈效应.  没有创建计算列导致查询不优化.  内存不足.  网络速度慢.  查询出的数据量过大(可以采用多次查询,其他的方法降低数据量).  锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷).  sp_lock,sp_who,活动的用户查看,原因是读写竞争资源.  返回了不必要的行和列.  查询语句不好,没有

SQL中=null查询不出结果而is null可以查询结果说明

我们在sql中要查询某列值为null的所有结果集时,查询条件应该这样写select * from 表 where 字段 is null而使用select * from 表 where 字段 = null是查不到正确的结果的.那这是为什么呢?要清楚为什么,就需要了解sql中的三值逻辑了.在SQL中逻辑表达式的可能值包括TRUE.FALSE和UNKNOWN,它们被称之为三值逻辑. 我们知道,在其它的语言中,逻辑表达式只有两种,要么是true,要么就是false.而sql中却存在第三个逻辑表达式UnK

SQL 中怎么查询数据库中具有的表、存储过程、试图数目、总触发器数、作业数

用户表:select count(*) 总表数 from sysobjects where xtype='u' 刚才那个是用户表,下面这个是系统表加用户表: select count(*) 总表数 from sysobject s where xtype in('u','s') 总视图数:select count(*) 总视图数 from sysobjects where xtype='v' 总存储过程数:select count(*) 总存储过程数 from sysobjects where

Django Admin Cookbook-8如何在Django admin中优化查询

8.如何在Django admin中优化查询? 如果你的Admin后台中有很多计算字段,那么你需要对每个对象运行多个查询,这会使你的Admin后台变得非常慢.要解决此问题,你可以重写管理模型中的get_queryset方法使用annotate聚合函数来计算相关的字段. 以下示例为Origin模型的中ModelAdmin管理模型: @admin.register(Origin) class OriginAdmin(admin.ModelAdmin): list_display = ("name&q

sql中对查询出来的数据进行分页

当sql中存储的数据量比较大时,在web中 数据显示时都会对数据进行分页,分页不会在客户端进行分页,而是在数据库查询过程中进行了分页. sql代码: DECLARE @pageindex INT; --页码 DECLARE @pagesize INT; --每页显示的记录数量 SET @pageindex=; SET @pagesize=5; SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY UserName) AS rownumber,* FRO

SQL Server优化查询

1. 首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个 10万条记录的表中查1条记录,那查询优化器会选择“索引查找”方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用 “全表扫描”方式.可见,执行计划并不是固定的,它是“个性化的”.产生一个正确的“执行计划”有两点很重要: (1)SQL语句是否清晰地告诉查询优化器它想干什么?(2)查询优化器得到

记一次SQL性能优化,查询时间从4000ms优化到200ms.

以下这句SQL是从PLM中获取代办工作流的.没优化前SQL语句执行一次大概4000ms(4秒). 1 select ch.change_number changeNumber, f.text changeDetail, u1.last_name creator, 2 l.value status, to_char(create_date,'yyyy-mm-dd hh24:mi:ss') createDate, 3 so.signoff_status type 4 from agile.chang

Sql中联合查询中的”子查询返回的值不止一个“的问题

在子查询中,如果想实现如下的功能: select lib,count(*),select sum(newsNo) from Table1 group by lib from Tabel1 T1,Table2 T2 where T1.newsNo =T2.newsNo group by lib 就会提示“子查询返回的值不止一个.”的错误,意思是子查询不能返回多个结果,只能返回一个结果. 因此可以改用如下的方式: select lib,count(*),select sum(newsNo) from

Sql语句优化-查询两表不同行NOT IN、NOT EXISTS、连接查询Left Join

在实际开发中,我们往往需要比较两个或多个表数据的差别,比较那些数据相同那些数据不相同,这时我们有一下三种方法可以使用:1. IN或NOT IN,2. EXIST或NOTEXIST,3.使用连接查询(inner join,left join 或者 right join). 看下面的数据,我们准备选择出在depart_info中的pid在user_info中不存在的depart_信息. 有表1:depart_info 表2:user_info 方法一:采用NOT IN IN和NOT IN后面接的是一