索引的重要性
昨天下午,徐州市百大超市有限公司的吉经理又打电话过来,说供应商服务系统中的"销售查询"模块无法正常运行,郁闷,难道又要跑一趟?打开计算机,使用"远程登录",竟然可以登录到他们的服务器,想起来他们最近换了光纤,也就不奇怪了,呵呵,爽,不过到时候得建议他们禁用远程登录啦,呵呵……
言归正传,看了一下页面中的代码,没问题呀,奇怪……截取其中的SQL语句到查询分析器中执行一下,有返回结果,但竟然要用去近两分钟的时间,怎么回事?COUNT一下,发现表里面的数据已经有五百七十多万行了,运行时间太长了,每日销售明细已经到这么多了,难怪查询慢了呢。不过也不应该这么慢,呵呵,看一下表结构,没有主键倒也罢了(数据是由另外一个家伙从MIS系统导入的,没有主键也不奇怪),竟然连索引都不建,建立索引,运行速度快多了,稍微增加查询时间的限制长度和IIS页面的超时时间,基本上可以运行了,但还是比较吃力,可能是因为服务器的性能不太好吧。再分析一下业务需求,KAO,“销售查询”页面上只提供最新三个月的数据的查询,表里放那么多的数据干嘛?把情况向他们反映了一下。
今天早上数据已经清理过了,他们建了另外一个表用以备份过期数据,看了一下,新表是没建索引的,使用COUNT计算总记录数用去1分40秒的时间,数据工三百多万条,原来的表中(我昨天建过索引)数据有二百多万条,也用COUNT计算总记录数,只耗时两秒钟,索引真的是太重要啦。索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据,否则,机器累死也完成不了指定的查询工作。
后记:这近六百万的数据还真是诱人呀,呵呵,拖回来研究数据仓库。
![](/Emoticons/QQ/icon14.gif)
![](/Emoticons/QQ/14.gif)
![](/Emoticons/QQ/24.gif)
Life is like a boat, and I'm at sea.