读书人

Delphi Adoquery 查询语句中有 select

发布时间: 2013-12-06 17:56:43 作者: rapoo

Delphi Adoquery 查询语句中有 select Count(字段) 查询速度很慢
我之前是用Web技术实现三层架构,中间层是正常的TADOConnection加TADOQuery。
有些操作速度慢,我以为是三层原因。有次全程跟踪下发现是两个很简单的查询语句导致速度慢的,'Select Y=count(*) from SizeGroupMaster where fsign = 0',另一个也差不多!检查过后才发现,是因为在查询语句里加了Count,Max等聚合函数才会使用查询速度变很慢,这句要5秒,而我用'Select * from SizeGroupMaster where fsign = 0'速度却不到1秒。就算我使用TADOConnection加TADOQuery直接连数据库速度也一样慢。
后来又找到了一个不正规的解决方法'select * from (Select Y=count(*) from SizeGroupMaster where fsign = 0) a'。把有聚合函数的查询语句嵌套在内部查询速度就变正常了!
各位大虾,能不能帮我找到原因! delphi? select?Count(字段) 查询速度慢
[解决办法]
试第一个语句的速度, 如果还慢, 试第二个语句
如果第二个语句够快, 查看你fsign 字段有没有索引, 没有的话, 加索引试试.
-----------------------------------------------------------------------
1 Select Y=count(1) from SizeGroupMaster where fsign = 0

2 Select Y=count(1) from SizeGroupMaster

[解决办法]
不应该是COUNT引起的吧。

你用的什么数据库
[解决办法]
你是用的是什么数据库

[解决办法]
用Count(*)要地方换成Count(0),这样应该会比Count(*)快一点!
[解决办法]
尽量不要用count *或者select *

使用*会让数据库需要做额外的操作
导致更好使
尽量传入明确的字段或字段序列

读书人网 >.NET

热点推荐