关于SQL查询语句的工作原理与效率问题 |
答題得分者是:oktony
|
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
部份代码如下:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select sum(单项累计) from tb_sf where 票据号=12');
ADOQuery1.SQL.Add(' and 项目类型 =:项目类型');
ADOQuery1.Parameters.ParamByName('项目类型').Value := Tot_Name[i] ;
ADOQuery1.Open;
在提问之前我说明一下,数据表中记录每天以数千条在增加,这样不用多久数据表中记录就会很多很多。另外项目类型栏位Tot_Name[i] 可能有十个不同的项目类型左右,这样我就担心查询效率了。
如上所述,我想问一下各位前辈,上面的查询实际上的运行过程会如何呢?我个人理解他有两种可能:一、从大量记录中首先找出票据号=12的记录(这样的话记录不会很多,最多二十条样子)然后从这个二十条记录中再运算项目类型=项目类型这个查询(如果有十个项目类型就要运算十次?)这种可能是我希望要的,因为这样效率高,快。二、另一种可能,从大量记录中找出票据号等于12和项目类型=项目类型1的记录运算,再从大量记录中找出票据号等于12和项目类型=项目类型2的记录运算,直至到项目类型10,这样的话就要重复从大量记录中找10次,我想会很慢,比上面的那种过程慢多了,上面是首先找出票据=12,那样的符合记录条数不会超过二十条的。然后在这20条里面运算十次项目类型的查询就快多了,不知道实际上该查询是哪一种可能呢?如果效率慢如何改善呢?谢谢!
------
我的编程起步于ktop,我将永远支持ktop |
oktony
中階會員 發表:67 回覆:132 積分:64 註冊:2004-12-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |