W wuyi Unregistered / Unconfirmed GUEST, unregistred user! 1999-08-05 #21 用Select Count(XX) from XXX得到纪录数, 效率如何? 我想它比 SELECT * FROM XXX肯定要快,但到底它还是要查找一遍的.请有实 际试验过的大侠们谈谈.
S SeaSky Unregistered / Unconfirmed GUEST, unregistred user! 1999-08-05 #22 对于有PrimeryKey的数据表, 如果在 XX上有索引, Select count(XX) from XXX 在server 处只要 读取这个索引的记录数, 根本就不用一条条的数,( Null 值不记录索引), 同理Select Count(*) from XXX 就只要读主键的索引纪录数。 Select * From XXX 就更简单,先从前数200条发送到客户端,然后等着客户段的 下一次请求。 最终要点, 每个数据表都应该有一个主键,这一提高数据库性能的首要条件,
对于有PrimeryKey的数据表, 如果在 XX上有索引, Select count(XX) from XXX 在server 处只要 读取这个索引的记录数, 根本就不用一条条的数,( Null 值不记录索引), 同理Select Count(*) from XXX 就只要读主键的索引纪录数。 Select * From XXX 就更简单,先从前数200条发送到客户端,然后等着客户段的 下一次请求。 最终要点, 每个数据表都应该有一个主键,这一提高数据库性能的首要条件,
T tqz Unregistered / Unconfirmed GUEST, unregistred user! 1999-08-05 #23 呵呵,seasky的话我爱听 这样就用Select count...吧。 大家没意见的话,我就要分赃了...
Y ywb Unregistered / Unconfirmed GUEST, unregistred user! 1999-08-26 #25 有时用RecordCount会出现问题,但不可否认,该方法仍旧是一个相当有用的方法。 有时可以用select count(XX) from (XXX) where (XXX)解决问题,或者采用笨办法: var i : integer; begin i:=0; if not Query1.Active then Query1.Open; Query1.first; while not Query1.EOF do begin i := i + 1; Query1.Next; end; end;
有时用RecordCount会出现问题,但不可否认,该方法仍旧是一个相当有用的方法。 有时可以用select count(XX) from (XXX) where (XXX)解决问题,或者采用笨办法: var i : integer; begin i:=0; if not Query1.Active then Query1.Open; Query1.first; while not Query1.EOF do begin i := i + 1; Query1.Next; end; end;