【鱼和熊掌不能兼得?】Top x 和 count(*)
数据量很大,为了达到高效的检索速度,我选择了select top x fd1,fd2 from tb where ...
但是我又想的到所有符合条件的记录,我想加上Count(*),这样一来速度大大降低,怎么办?
问题点数:20、回复次数:13Top
1 楼wgsasd311(自强不息)回复于 2006-03-05 01:08:39 得分 0
作两条语句分开写Top
2 楼bugchen888(臭虫)回复于 2006-03-05 09:21:53 得分 0
不太明白,最好把原始语句贴出来.Top
3 楼scmail81(琳·风の狼(修罗))回复于 2006-03-05 09:25:55 得分 0
create table A
(
fd1 int,
fd2 int
)
insert A select 1,2
insert A select 2,1
insert A select 3,1
insert A select 4,3
insert A select 5,4
insert A select 6,4
insert A select 7,2
select fd1,fd2, count(*) as num from
(select top 1 WiTh Ties * from A order by fd2 DESC) T
group by fd1,fd2Top
4 楼sxycgxj(云中客)回复于 2006-03-05 09:50:29 得分 0
不错,使用子查询可以实现,不知道楼主在这里所要的count(*),是指的全部还是仅显示出来的记录总和Top
5 楼mary0226(嘉儿)回复于 2006-03-05 10:26:24 得分 0
关注Top
6 楼i_Ask()回复于 2006-03-05 10:52:31 得分 0
我要加的Count(*)是所有满足条件的记录数据。比如我有一张500万记录的表,我用全文索引,我想要速度又想要取出所有符合条件的记录数。Top
7 楼zjcxc(邹建)回复于 2006-03-06 19:23:36 得分 0
那样的需求确实是鱼和熊掌的问题Top
8 楼PacificBlue(侯志斌)回复于 2006-03-06 23:20:29 得分 0
可不可以用[不相关子查询]将符合条件的记录选择出来然后在外层进行Count(*)呢,理论上这样应该大大提高速度的,尤其是当你在子查询中写出很漂亮的查询条件时:DTop
9 楼lzhs(快乐至上)回复于 2006-03-08 16:28:55 得分 0
LS上,[不相关子查询]的效率也不一定就高哦。
楼主,我觉得,你确实有点小贪心 :)
舍鱼而取熊掌是王道~Top
10 楼i_Ask()回复于 2006-03-10 20:27:27 得分 0
To:各位
我是不得已而为之!千万条数据模糊检索 我要速度快,而且要知道所有相关记录的条数!Top
11 楼goldhawk1010(goldhawk)回复于 2006-03-11 08:16:26 得分 0
路过,期待中Top
12 楼tntzbzc(华裔大魔王—抗日要从娃娃抓起)回复于 2006-05-31 21:05:21 得分 0
模糊查询可以换全文检索Top
13 楼ReViSion(和尚)回复于 2006-05-31 21:23:15 得分 0
哈哈,这也行呀,
没找出所有的记录之前,怎么能得到行数Top




