sql中select字段影响性能分析
2008-04-21 21:39
495 查看
很多人都说Select 后面 * 好还是字段名称好,都有疑问。我也以前对此问题模糊不清,经常以为select后面直接写每一个字段会好。
但是今天我对论坛查询情况跟踪分析的时候,一个翻页查询的read始终很高,不管我用*还是每一个字段写上, 都是很高。
这个表格大概有七十万条数据。
select * from table 或者 select col1,col2,col3 from table两种情况。
在下图中黄色注释部分描述上看到,这条语句偏偏在主键id上消耗那么资源,太不可思议。就此把select后面的字段少些几个都是一样的分析结果。最后我就只剩下主键ID来查询,果然凑效!~~~~
select top 40 topic_Id
from Forum_topic with(nolock) where 1=1
and IsDelete=0 and IsTop2=0 and Board_ID=13 order by istop desc,LastReplyTime desc,Topic_id desc
以上两个图片在select 查询的字段的选择上,性能预计成本大不相同。甚至万级别的成本,是在不可忍受。
有了这样的初步结果之后,我就对此论坛的数据库i/o一直很高有了初步的解决办法。
还有一个就是一下查询中,不知道为什么有些参数(红色)那么特别,请高人指点~~~
dbcc memorystatus
Buffer Distribution Buffers
------------------------------ -----------
Stolen 7119
Free 3608
Procedures 711
Inram 0
Dirty 1171
Kept 0
I/O 0
Latched 18
Other 194077
(所影响的行数为 9 行)
Buffer Counts Buffers
------------------------------ -----------
Commited 206704
Target 206704
Hashed 195266
InternalReservation 526
ExternalReservation 0
Min Free 1936
Visible 206704
(所影响的行数为 7 行)
Procedure Cache Value
------------------------------ -----------
TotalProcs 445
TotalPages 711
InUsePages 291
(所影响的行数为 3 行)
Dynamic Memory Manager Buffers
------------------------------ -----------
Stolen 7830
OS Reserved 13648
OS Committed 13626
OS In Use 13147
General 1187
QueryPlan 708
Optimizer 0
Utilities 11
Connection 18480
(所影响的行数为 9 行)
Global Memory Objects Buffers
------------------------------ -----------
Resource 931
Locks 225
XDES 112
SQLCache 70
Replication 2
LockBytes 2
ServerGlobal 23
(所影响的行数为 7 行)
Query Memory Objects Value
------------------------------ -----------
Grants 0
Waiting 0
Available (Buffers) 99648
Maximum (Buffers) 99648
(所影响的行数为 4 行)
Optimization Queue Value
------------------------------ -----------
Optimizing 0
Waiting 0
Available 64
Maximum 64
(所影响的行数为 4 行)
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
但是今天我对论坛查询情况跟踪分析的时候,一个翻页查询的read始终很高,不管我用*还是每一个字段写上, 都是很高。
这个表格大概有七十万条数据。
select * from table 或者 select col1,col2,col3 from table两种情况。
在下图中黄色注释部分描述上看到,这条语句偏偏在主键id上消耗那么资源,太不可思议。就此把select后面的字段少些几个都是一样的分析结果。最后我就只剩下主键ID来查询,果然凑效!~~~~
select top 40 topic_Id
from Forum_topic with(nolock) where 1=1
and IsDelete=0 and IsTop2=0 and Board_ID=13 order by istop desc,LastReplyTime desc,Topic_id desc
以上两个图片在select 查询的字段的选择上,性能预计成本大不相同。甚至万级别的成本,是在不可忍受。
有了这样的初步结果之后,我就对此论坛的数据库i/o一直很高有了初步的解决办法。
还有一个就是一下查询中,不知道为什么有些参数(红色)那么特别,请高人指点~~~
dbcc memorystatus
Buffer Distribution Buffers
------------------------------ -----------
Stolen 7119
Free 3608
Procedures 711
Inram 0
Dirty 1171
Kept 0
I/O 0
Latched 18
Other 194077
(所影响的行数为 9 行)
Buffer Counts Buffers
------------------------------ -----------
Commited 206704
Target 206704
Hashed 195266
InternalReservation 526
ExternalReservation 0
Min Free 1936
Visible 206704
(所影响的行数为 7 行)
Procedure Cache Value
------------------------------ -----------
TotalProcs 445
TotalPages 711
InUsePages 291
(所影响的行数为 3 行)
Dynamic Memory Manager Buffers
------------------------------ -----------
Stolen 7830
OS Reserved 13648
OS Committed 13626
OS In Use 13147
General 1187
QueryPlan 708
Optimizer 0
Utilities 11
Connection 18480
(所影响的行数为 9 行)
Global Memory Objects Buffers
------------------------------ -----------
Resource 931
Locks 225
XDES 112
SQLCache 70
Replication 2
LockBytes 2
ServerGlobal 23
(所影响的行数为 7 行)
Query Memory Objects Value
------------------------------ -----------
Grants 0
Waiting 0
Available (Buffers) 99648
Maximum (Buffers) 99648
(所影响的行数为 4 行)
Optimization Queue Value
------------------------------ -----------
Optimizing 0
Waiting 0
Available 64
Maximum 64
(所影响的行数为 4 行)
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
相关文章推荐
- sql中select字段影响性能分析
- SQL中通过*查询和通过指定字段查询性能分析
- Local prefixed index和Local nonprefixed index对select语句的性能影响分析
- Salesforce select字段的多少对性能影响巨大
- ADO.net,Linq to SQL和Entity Framework性能实测分析
- 转 sql server性能分析--执行sql次数和逻辑次数
- 分析影响流媒体服务器性能的硬件瓶颈
- MySQL中join语句的基本使用教程及其字段对性能的影响
- SQl server 如何获得新增的自增长字段IDde 值 使用select @@IDENTITY能快速解决,但是怎么使用呢?
- 分析影响流媒体服务器性能的硬件瓶颈【转播】
- Linq to SQL的Select性能测试
- Oracle DB SQL 性能分析器
- 一个Web报表项目的性能分析和优化实践(一):小试牛刀,统一显示SQL语句执行时间
- Oracle DB SQL 性能分析器
- 性能测试培训:sql server性能测试分析局部变量的性能影响2
- .NET.性能:装箱与拆箱、string stringBuilder、struct class、Add AddRangle等影响性能分析
- 分析SQL语句的性能-- Compare NText Column value by using CheckSum
- 如何使用SQL Profiler 性能分析器
- 分析SQL语句性能3种方法
- 动态组装sql语句时使用str = where = "1=1"; 然后再进行追加对性能的影响