数据库查询效率优化问题:
从数据表TB002中选择25个记录,方法有如下两种:
---------------------------------------------------
1.
select top 25 * from TB002 where crbh='00' and cpxh not in (select top 0 cpxh from B03234 where crbh='00')
2.
select IDENTITY(int, 1,1) AS ID_Num,* into #temp from TB03234
select * from #temp where ID_Num between 1 and 15
----------------------------------------------------
由于B03234记录集较多,可能会达到10^7(n千万),这样查询效率明显降低,然而对于1.这个查询语句我用分析器查看过了,它的效率还和第二个select语句的top n有关,当n增大时,效率明显降低;对于2.本身效率就非常低;
我想这样可能可以使用增加递增id,通过select * from TB002 between m and n解决,存在的矛盾是,数据库中此类表很多,每行记录增加id,那么显然浪费了存储空间,请教有没有朋友可以在不添加id的前提之下提高此类查询效率的方法,先行谢过了!