sql语句根据特定条件改变排序及效率测试
2007-10-04 11:32
274 查看
sql语句根据特定条件改变排序及效率测试
两个解决方案:SELECT * FROM T_Admin
ORDER BY CASE WHEN admin_name = 'loo' THEN 0 ELSE 1 END
另外一种:
SELECT *, 0 AS tmp_o
FROM t_admin
WHERE admin_name = 'loo'
UNION
SELECT *, 1 AS tmp_o
FROM t_admin
WHERE admin_name <> 'loo'
ORDER BY tmp_o
现在来考虑一下两条语句的效率问题
建立表:
CREATE TABLE [TestTable] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[LastName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[Country] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Note] [nvarchar] (2000) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
插入数据:(2万条,用更多的数据测试会明显一些)
SET IDENTITY_INSERT TestTable ON
declare @i int
set @i=1
while @i<=20000
begin
insert into TestTable([id], FirstName, LastName, Country,Note) values(@i, 'FirstName_XXX','LastName_XXX','Country_XXX','Note_XXX')
set @i=@i+1
end
SET IDENTITY_INSERT TestTable OFF
简单的测试一下
如果不用top,所有数据都select出来的话两个的成本大概都是在50%左右,case语句会更快那么一点。
而同时输出几万记录的情况确实是太少了,加上top 10 结果就差非常的多。
union语句只需要0.38% 而 case语句竟然要99.26%。
测试的结果是:
如果小量数据推荐使用case语句,毕竟写起来是方便多了。
如果你的数据在1万以上,最好还是用union语句。
相关文章推荐
- sql语句根据特定条件改变排序及效率测试
- sql语句根据特定条件改变排序及效率测试
- 如何测试sql语句性能,提高执行效率(装载)
- hibernate根据条件动态组装sql/hql语句(仿ibatis动态查询语句功能)
- 同一字段根据不同条件更新的sql语句的写法
- 使用正则表达式获取Sql查询语句各项(表名、字段、条件、排序)
- 根据多表条件更新表.............. 一条sql语句.............
- 根据条件编辑SQL语句,执行回调函数查询
- oracle心得1--oracle简介@基本sql语句@条件查询@排序数据理论与案例
- 合并一条SQL语句 根据不同条件
- php根据查询条件拼接sql语句
- 【SQL】根据插入语句条件判断插入哪张表,多表插入,2017年
- 要提高SQL查询效率where语句条件的先后次序应如何写
- sql查询时,根据特定的条件给表的某一个字段赋值
- MySQL中根据if标签实现多条件模糊查询(动态SQL语句)
- SQL语句执行效率及性能测试
- hibernate根据条件动态组装sql/hql语句(仿ibatis动态查询语句功能)
- Oracle根据表的大小排序SQL语句
- SQL语句执行效率测试
- sql语句中条件查询in、like、=的效率