1、首先我们先来看一下查询语句的like优化,如下图所示,分别将百分号放在前面和后面。
2、百分号放在后面的查询更高效一些。
3、接下来我们在来看一下OR查询的效率,如下图所示,通过OR来查询两个条件的记录。
4、执行后看执行计划,我们看到这种OR查询的效率也不是很高。
5、如果想替换OR查询就可用Union All来代替,如下图所示,用两个单独的查询实现。
6、第一种很显然会比第二种慢,所以在使用的时候查询条件尽量不要有计算。
在SQL SERVER中查询数据库中第几条至第几条之间的数据SQL语句示例如下:
select top 20 * from 表 where id not in (select top 10 id from 表 order by id)
order by id;
以上sql语句实现查询第10条至20条之间的记录,此方法是先取出前20条的ID,排除前10条数据的ID,然后在剩下的数据里面取出前10条数据。
扩展资料
SQL server常用操作sql语句介绍:
1、查询:select * from table1 where 范围
2、插入:insert into table1(field1,field2) values(value1,value2)
3、删除:delete from table1 where 范围
4、更新:update table1 set field1=value1 where 范围
5、查找:select * from table1 where field1 like ’%value1%’
在SQL SERVER中查询数据库中第几条至第几条之间的数据SQL语句如何写?
如:在SQL SERVER中查询数据库中第10条至30条之间的数据SQL语句如何写?
------解决方案--------------------
select top 20 * from 表 where id in (select top 30 id from 表 order by id)order by id desc
------解决方案--------------------
如果有唯一列可以用ls的
select identity(int,1,1) id,* into temp from 表
select * from temp where id between 10 and 30
------解决方案--------------------
select top 20 * from 表 where 标识字段 not in (select top 9 标识字段 from 表 )
------解决方案--------------------
1
select top 20 * from 表
where id not in (select top 10 id from 表 order by id)
order by id
2--应该从11开始
select * from 表 where id between 11 and 30
--查第3条到第5条 一共3条数据
declare @tou int,@wei int
set @tou = 3
set @wei = 5
select top (@wei - @tou + 1) * from 表名 where id not in (select top (@tou - 1) id from 表名 order by id)
自己把表名替换 运行一下就看到效果了