日期:2014-05-18  浏览次数:20527 次

数据库性能优化问题
数据库里有七八张表,每张表之间都可以用一个代码字段和一个时间字段关联起来(有些表没有代码字段,只有时间字段),每张表的记录大小相差挺大,少的几千条,多的二十万条左右。应用程序客户端对数据要求比较特殊,查询时要求可以任意指定返回数据的字段(这七八张表的字段都放在一起供选择),查询条件主要是代码和时间。这种条件下,最复杂的情况下要求将所有的表都关联起来查询。
不知道有没有好的实现方式?有没有有效的方法提高数据库查询的性能?

------解决方案--------------------
1、注意Where後面字段的順序,將主鍵、索引的字段放在最左邊
2、等號左邊的字段不是迫不得已的,最好不要加函數,會影響效率的
3、檢查索引建立得是否合理

------解决方案--------------------
4、定期將數據備份到備份表中
5、查詢時最好加上(nolock),如:select * from table1 (nolock)
------解决方案--------------------
帮D
------解决方案--------------------
把经常要查询用到的表设置索引,并且用索引优化器来优化~~~~ 这个是最普遍的做法~~、其次是检查查询代码,防止数据冗余,经常查看整理下碎片~ ~~
------解决方案--------------------
如果有统计 可以使用CREATE STATISTICS
可以在带聚集索引的视图或索引视图上执行。只有在查询直接引用视图并为该视图指定了 NOEXPAND 提示的情况下,优化程序才会使用索引视图的统计。否则,在查询计划代入索引视图之前,统计由基础表导出。
------解决方案--------------------
如果有条件可以将这几个要连接的数据库表放在不同的磁盘上~用多I/O来提高查询速度~
------解决方案--------------------
---- 1.任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时
要尽可能将操作移至等号右边。
---- 2.in、or子句常会使用工作表,使索引失效;如果不产生大量重复值,可以考虑把
子句拆开;拆开的子句中应该包含索引。
---- 3.要善于使用存储过程,它使SQL变得更加灵活和高效。
------解决方案--------------------
建立一个视图,从视图里取,最快的
------解决方案--------------------
上面的基本上都讲了
合理的建立索引,where后面的关系等等

建议楼主按照这几种方式进行
多试几种方法,多测试,找到一个最快的

honkerhero(孤独的流浪) 所的建立视图,其实在视图里边取数据和在表中取数据的效率是一样的,只是逻辑复杂的时候,用视图要简化一些
------解决方案--------------------
主外键字段建索引,聚集索引要用好
就看你的索引创建了,表太多就是比较麻烦。