关于SQLServer 2000 索引问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于SQLServer 2000 索引问题相关的知识,希望对你有一定的参考价值。
SQLServer 2000数据库类型.
数据信息百万条.每天新写入10万条左右.
建立索引...调用查询.一切正常...
间隔2天...调用查询提示"超时"或者."500错误"
删除数据索引.重新建立恢复...
请高手帮助解决.
每日写入10万左右,1d=24H=24*60m=24*60*60s=86400s 这才8万多条记录,每秒钟至少写入一条记录,这个已经不是关系库可以承受的了。
你该跟领导说明情况,让他知道还有个“实时数据库”,这个才是解决办法。
如PI、eDNA等实时库才是能承受。
别说sql2000性能不好,就算用oracle11r2也不成。
如果非得用关系库,那就考虑分表吧。
例如:主键一般都是有含义的,如 年份+序号,字母+序号..按照某一规律进行分表,然后将各分表连接做成一个视图。 参考技术A 传统上认为,数据库通过使用索引就一定可以更快地遍历表,而且在实际的数据库系统中的优化器都是根据定义的索引来提高性能。
但是,如果在SQL语句的where子句中写的SQL代码不合理,就会造成优化器删去索引而使用全表扫描,一般这种SQL语句就是所谓的劣质SQL语句。在编写SQL语句时我们应清楚优化器根据何种原则来删除索引,这有助于写出高性能的SQL语句。
给你举个例子:
Select * from employee where salary<>3000;
对这个查询,可以改写为不使用NOT:
Select * from employee where salary<3000 or salary>3000;
虽然这两种查询的结果一样,但是第二种查询方案会比第一种查询方案更快些。第二种查询允许Oracle对salary列使用索引,而第一种查询由于使用了NOT运算符所以不能使用索引。 参考技术B 从上面来看你的语句可能是走了索引。但是 SQLSERVER 是根据你的统计信息来决定选用那种执行计划的,执行计划选的好查询或者更新就快,否则就慢。因为你的数据量的变动有点大,可能统计信息跟不上,就是信息和目前的记录数不一致。
建议你先检查一下你的数据库统计信息有没有自动更新,假如有更新的话会不会是更新频繁太慢了。再不行检查一下你的语句或者代码。
以上是关于关于SQLServer 2000 索引问题的主要内容,如果未能解决你的问题,请参考以下文章
索引超出了数组界限(Microsoft.SqlServer.Smo)
sqlserver 2000 索引问题 麻烦各位,请教个sqlserver 索引的问题: 有表testTable( barcode,pdate,...),有