两个一模一样的表做同样的查询,记录条数相差不多,一个14w,一个14.7w,但是消耗的时间确是一个35s,一个要40m。百思不得其解啊?是什么原因造成的呢?高手指教。
表一:
CREATE TABLE [log_cnc_exportip_0517] (
[ip] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[ipnum] [float] NULL ,
[country] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
表二:
CREATE TABLE [log_ct_exportip_0515] (
[ip] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[ipnum] [float] NULL ,
[country] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
更新sql:
update log_cnc_exportip_0517 set country = tb_ipaddress.country from tb_ipaddress where log_cnc_exportip_0517.ipnum between tb_ipaddress.ip1 and tb_ipaddress.ip2
让人费解啊!
------解决方案--------------------
update log_cnc_exportip_0517 set country = tb_ipaddress.country from tb_ipaddress where log_cnc_exportip_0517.ipnum between tb_ipaddress.ip1 and tb_ipaddress.ip2
这里的log_cnc_exportip_0517.ipnum匹配条件是between tb_ipaddress.ip1 and tb_ipaddress.ip2
我觉得可能是这里的问题,log_cnc_exportip_0517表中的每条记录的ipnum的使用between tb_ipaddress.ip1 and tb_ipaddress.ip2的条件是不是在tb_ipaddress里面有不止一条记录?
这样的话可能就对了。
------解决方案--------------------
suifix() ( ) 信誉:100 Blog 加为好友 2007-5-17 12:28:14 得分: 0
1。贴上index啊
2。填充因子一样?
3。一张表经常用的?执行操作的时候是不是有并发用户?
4。数据库日至是否在作第二个表的时候满了?而且日至开得很大?
......
填充因子这一观点很重要,填充因子越小,插入的速度就快,但查询速度就慢。
如,当填充因子的值为50%,那么数据库的读取性能会降低2倍。