关于sql脚本性能的一些研究
2011-09-28 17:05
357 查看
SELECT
a.*
FROM
[Function] a
where
not exists (
select FunID from RelFunPakageFun b
where FunPakageID = '786D25CB-8E2E-4F2D-A893-808F1AC24AE5' and a.FunID = b.FunID
)
SELECT
*
FROM
[Function] a
where
not exists (
select * from RelFunPakageFun b
where FunPakageID = '786D25CB-8E2E-4F2D-A893-808F1AC24AE5' and a.FunID = b.FunID
)
结论:not exists 内是否使用*号对于性能没有影响
select * from Tenant
select
[TenantID]
,[FullName]
,[ShortName]
,[AdminID]
,[Status]
,[CreateTime]
,[Creater]
,[EditTime]
,[Editor]
from Tenant
结论:*与写明各列性能相差不大,在列不是多得离谱的情况下
SELECT
a.*
FROM
[Function] a
where
not exists (
select FunID from RelFunPakageFun b
where FunPakageID = '786D25CB-8E2E-4F2D-A893-808F1AC24AE5' and a.FunID = b.FunID
)
SELECT
*
FROM
[Function]
where
FunID not in (
select FunID from RelFunPakageFun
where FunPakageID = '786D25CB-8E2E-4F2D-A893-808F1AC24AE5'
)
结论:exists相比in有更高的索引利用率,但实际效率相差并不大,除非海量数据否则用户不会有等待时间上的差别
select COUNT(*) from tbTest
select COUNT(tid) from tbTest
select COUNT(tint) from tbTest
select COUNT(tname) from tbTest
select COUNT(tinfo) from tbTest
tid唯一索引,tint无索引,tname不唯一索引,tinfo无索引
tin int,tin int,tname varchar(50),tinfo varchar(50)
结论:count时*与唯一索引速度相同,速度与类型无关,不唯一索引慢于唯一索引,无索引最慢。count应使用*,避免写的不是唯一索引
a.*
FROM
[Function] a
where
not exists (
select FunID from RelFunPakageFun b
where FunPakageID = '786D25CB-8E2E-4F2D-A893-808F1AC24AE5' and a.FunID = b.FunID
)
SELECT
*
FROM
[Function] a
where
not exists (
select * from RelFunPakageFun b
where FunPakageID = '786D25CB-8E2E-4F2D-A893-808F1AC24AE5' and a.FunID = b.FunID
)
结论:not exists 内是否使用*号对于性能没有影响
select * from Tenant
select
[TenantID]
,[FullName]
,[ShortName]
,[AdminID]
,[Status]
,[CreateTime]
,[Creater]
,[EditTime]
,[Editor]
from Tenant
结论:*与写明各列性能相差不大,在列不是多得离谱的情况下
SELECT
a.*
FROM
[Function] a
where
not exists (
select FunID from RelFunPakageFun b
where FunPakageID = '786D25CB-8E2E-4F2D-A893-808F1AC24AE5' and a.FunID = b.FunID
)
SELECT
*
FROM
[Function]
where
FunID not in (
select FunID from RelFunPakageFun
where FunPakageID = '786D25CB-8E2E-4F2D-A893-808F1AC24AE5'
)
结论:exists相比in有更高的索引利用率,但实际效率相差并不大,除非海量数据否则用户不会有等待时间上的差别
select COUNT(*) from tbTest
select COUNT(tid) from tbTest
select COUNT(tint) from tbTest
select COUNT(tname) from tbTest
select COUNT(tinfo) from tbTest
tid唯一索引,tint无索引,tname不唯一索引,tinfo无索引
tin int,tin int,tname varchar(50),tinfo varchar(50)
结论:count时*与唯一索引速度相同,速度与类型无关,不唯一索引慢于唯一索引,无索引最慢。count应使用*,避免写的不是唯一索引
相关文章推荐
- 关于sql脚本性能的一些研究
- 关于时间函数的一些有用的SQL脚本
- 关于CABAC熵编码一些问题的研究
- 关于做web前端性能测试一些原则的心得分享
- 一些性能查询的SQL 备忘
- 关于笛卡尔积和sql的一些知识点
- 关于SQL SERVER 2005报错"性能监视…
- 关于Discuz论坛架构的一些研究心得
- 【讨论】关于Java性能监控的一些记录
- [MySql]关于sql和mysql对于别名不能调用的一些理解
- 关于Expression Tree和IL Emit的所谓的"性能差别"“.NET研究”;
- 关于sql脚本导入Oracle时重复生成check约束的问题解决
- Oracle 性能相关常用脚本(SQL)
- 一个关于考勤统计的sql研究
- 关于Android内存管理及性能优化的一些细节
- 关于Python的编码、乱码以及Unicode的一些研究
- 面试常考题--关于网站性能优化的一些方法
- 关于SQL 的一些操作
- 关于测试工具以及前端性能测试的一些思考
- 关于log的一些脚本