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

时间:2021-02-16 02:58:02
针对一个有50W条记录表来讲

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


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

目前依然在使用SQL SVERVER 2000 

各位觉得用不用转成oracle

17 个解决方案

#1


百萬?sql2000足夠了......

#2


where 后面的条件越多越好,但查询时间可能会长一些。如果各表都建立了必要的主建或索引,情况会好一些。

数据库中已经有多个表超多了50W记录 有的已经逼近百万,SQL SERVER 2000能处理。
但我建议转oracle是个不错的选择。

#3


sql2000还可以用
我们的服务器用的也是SQL2000 数据已经快200W了 有50多个表

#4


我們的系統,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: 弱弱的想,用來玩游戲會不會很爽?

#5


1、条件多,查询的速度肯定慢一些,适当地建立索引有利用提高查询的速度

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

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

#6


 关键是合理的使用索引

#7


几个tb级的数据库,MSSQL还是能够处理的
再大就困难了

你这个应该没问题

#8


条件若能有效地利用索引,这种矛盾能够得以缓解
所以没有绝对的多好还是少好
几个50W的记录sqlserver处理不了,微软还出什么2005?微软的数据库早歇菜了

#9


少了一句:
条件少扫描的时间少,但数据集可能大,条件多反之,

#10


如果记录中有两个都是 唯一标识的 
那是都where  and 还是只写一个比较快

#11


理论上,条件越多,速度一定会越慢些呀。

#12


Where后条件的先后顺序也会影响到SQL语句的执行效率

#13


如果记录中有两个都是 唯一标识的  
那是都where  and 还是只写一个比较快 
----一个快

#14


不用转换,sql足够用,
对于条件,要尽量的优化sql语句,建立合适的索引,
少用临时表,减少表连接,多用存储过程等等。

qq307366759 注明csdn

#15


没有查询条件越多就越慢, 或是查询条件越多就越快的说法

具体的要看具体应用。
比如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 .. 会更快

说以说,这个不能一概而论

#16


and 可能会块,or可能会慢

#17


存储过程也不是万能的,也许会更慢,存储过程的优化计划是根据过程的参数设定的,对有的数据可能快有的可能就会慢了

#1


百萬?sql2000足夠了......

#2


where 后面的条件越多越好,但查询时间可能会长一些。如果各表都建立了必要的主建或索引,情况会好一些。

数据库中已经有多个表超多了50W记录 有的已经逼近百万,SQL SERVER 2000能处理。
但我建议转oracle是个不错的选择。

#3


sql2000还可以用
我们的服务器用的也是SQL2000 数据已经快200W了 有50多个表

#4


我們的系統,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: 弱弱的想,用來玩游戲會不會很爽?

#5


1、条件多,查询的速度肯定慢一些,适当地建立索引有利用提高查询的速度

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

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

#6


 关键是合理的使用索引

#7


几个tb级的数据库,MSSQL还是能够处理的
再大就困难了

你这个应该没问题

#8


条件若能有效地利用索引,这种矛盾能够得以缓解
所以没有绝对的多好还是少好
几个50W的记录sqlserver处理不了,微软还出什么2005?微软的数据库早歇菜了

#9


少了一句:
条件少扫描的时间少,但数据集可能大,条件多反之,

#10


如果记录中有两个都是 唯一标识的 
那是都where  and 还是只写一个比较快

#11


理论上,条件越多,速度一定会越慢些呀。

#12


Where后条件的先后顺序也会影响到SQL语句的执行效率

#13


如果记录中有两个都是 唯一标识的  
那是都where  and 还是只写一个比较快 
----一个快

#14


不用转换,sql足够用,
对于条件,要尽量的优化sql语句,建立合适的索引,
少用临时表,减少表连接,多用存储过程等等。

qq307366759 注明csdn

#15


没有查询条件越多就越慢, 或是查询条件越多就越快的说法

具体的要看具体应用。
比如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 .. 会更快

说以说,这个不能一概而论

#16


and 可能会块,or可能会慢

#17


存储过程也不是万能的,也许会更慢,存储过程的优化计划是根据过程的参数设定的,对有的数据可能快有的可能就会慢了