讨论: 对于一个SQL语句,where后面的条件越多,那么查询速度会怎么样?

tianhuo_soft 2007-10-25 02:04:14
针对一个有50W条记录表来讲

查询条件where 后面的条件越多越好 还是有一个和有N个一样


数据库中已经有多个表超多了50W记录 有的已经逼近百万

目前依然在使用SQL SVERVER 2000

各位觉得用不用转成oracle
...全文
5113 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiehua822 2007-10-27
  • 打赏
  • 举报
回复
存储过程也不是万能的,也许会更慢,存储过程的优化计划是根据过程的参数设定的,对有的数据可能快有的可能就会慢了
nobody@noone 2007-10-26
  • 打赏
  • 举报
回复
and 可能会块,or可能会慢
fcuandy 2007-10-26
  • 打赏
  • 举报
回复
没有查询条件越多就越慢, 或是查询条件越多就越快的说法

具体的要看具体应用。
比如tb 50w记录. id idneity 聚集索引
要求:查出最近5条,近三天内 username 含 aa的记录
那么写法是
select top 5... where datediff(dd,datefield,getdate())<=3 and username like '%aa%' order by datefield
说条件越多就越慢的朋友高兴了,确实越多越慢.

如果定期对数据做分析,可以知道三天前的数据的id最小都是大于470000的,那么
where id>470000 and datediff(dd,datefield,getdate())<=3 and username like '%aa%' order by datefield
说条件赵多越快的朋友就又高兴了,确实加了这个where id>.. 之后快多了。
但是去掉 and username like .. 会更快

说以说,这个不能一概而论
chinank 2007-10-26
  • 打赏
  • 举报
回复
不用转换,sql足够用,
对于条件,要尽量的优化sql语句,建立合适的索引,
少用临时表,减少表连接,多用存储过程等等。

qq307366759 注明csdn
wgzaaa 2007-10-26
  • 打赏
  • 举报
回复
如果记录中有两个都是 唯一标识的
那是都where and 还是只写一个比较快
----一个快
clubuu 2007-10-26
  • 打赏
  • 举报
回复
Where后条件的先后顺序也会影响到SQL语句的执行效率
hui_hui_2007 2007-10-26
  • 打赏
  • 举报
回复
理论上,条件越多,速度一定会越慢些呀。
tianhuo_soft 2007-10-26
  • 打赏
  • 举报
回复
如果记录中有两个都是 唯一标识的
那是都where and 还是只写一个比较快
wgzaaa 2007-10-25
  • 打赏
  • 举报
回复
少了一句:
条件少扫描的时间少,但数据集可能大,条件多反之,
wgzaaa 2007-10-25
  • 打赏
  • 举报
回复
条件若能有效地利用索引,这种矛盾能够得以缓解
所以没有绝对的多好还是少好
几个50W的记录sqlserver处理不了,微软还出什么2005?微软的数据库早歇菜了
kelph 2007-10-25
  • 打赏
  • 举报
回复
几个tb级的数据库,MSSQL还是能够处理的
再大就困难了

你这个应该没问题
hooo 2007-10-25
  • 打赏
  • 举报
回复
关键是合理的使用索引
ojuju10 2007-10-25
  • 打赏
  • 举报
回复
1、条件多,查询的速度肯定慢一些,适当地建立索引有利用提高查询的速度

2、对于几百万级表,mssql 完全有能力运行

3、由mssql数据库改为oracle数据库,程序要重新写一遍,数据库的脚本也要重新写一遍,工作量比较大

playwarcraft 2007-10-25
  • 打赏
  • 举报
回复
我們的系統,4個db,總共table大概600個,store procedure大概500支。
另外有少量的view,trigger等。
使用2臺機子cluster server
操作系統2003
機子配置 Hewlett Packard HP server rx2620 Itanium 2
1.30GHz, 9.98GB of RAM.
Intel Itanium processor family

p.s: 弱弱的想,用來玩游戲會不會很爽?
wuxinyuzhu 2007-10-25
  • 打赏
  • 举报
回复
sql2000还可以用
我们的服务器用的也是SQL2000 数据已经快200W了 有50多个表
dawugui 2007-10-25
  • 打赏
  • 举报
回复
where 后面的条件越多越好,但查询时间可能会长一些。如果各表都建立了必要的主建或索引,情况会好一些。

数据库中已经有多个表超多了50W记录 有的已经逼近百万,SQL SERVER 2000能处理。
但我建议转oracle是个不错的选择。
playwarcraft 2007-10-25
  • 打赏
  • 举报
回复
百萬?sql2000足夠了......

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧