本帖最后由 tansx 于 2013-05-04 10:49:59 编辑

解决方案 »

  1.   

    数据库设计没有问题
    查询建议不要使用视图,没有索引,查询速度很慢。
    查询的where 字段创建索引
    http://www.cnblogs.com/worfdream/articles/2840582.html
      

  2.   

    是要多次出库。出库时从入库中查找对应的条码,并在找到的记录中填写出库单的单号。如:入库中有箱号为001和002的记录,现在要出库的箱号为002,在出库保存时,从入库表中查找箱号为002的记录,如果找不到则提示要出库的箱号不存在,如果找到了,则更新该记录的Yout(出库标志)和OutBill(出库单号)。
      

  3.   

    1、你的where条件限制只查每天的数据吗?如果不是,那么就会有一个问题:入库主表*入库明细表*出库主表*出库明细表,CPU要对这么多的数据进行匹配,如果这些链接字段都没索引,那查询超时是很正常的。
    2、一般视图只是为了隐藏关键字段和提高代码的可视性,对性能没有任何提高,查询的时候,你要尽量的只查询自己需要的字段。
    3、如果4个表的数据量大,就进行分区,这样也可以减少io读取。
      

  4.   

    where条件限制不只查每天的数据。
    请问:
    1、我在四个表中设置了索引。在视图或where时还能进行索引吗?
    2、SQL2000能进行分区吗?如何分?
    谢谢!
      

  5.   

    在连接字段建立索引,视图和where还能进行索引,
    T-SQL的执行顺序是:from 表,然后join on ,多个jion on 查询分析器会迭代处理,然后是where,如果where条件上面有索引就按索引走,视图在查询时,查询分析器会转义成T-SQL语句。SQL2000我没用过,应该可以分区吧。
      

  6.   

    请教你是说在代码中的where后加索引吗?请问如何加?
      

  7.   

    设计上大体没什么问题,如果你已经设计好过表,程序也设计了,再从设计上修改,工程量比较大。
    建议是先看是哪位置引起查询慢,检查下执行计划,从执行计划去分析。如果执行计划没问题,在服务器端查询也都没问题,可能是要从别的方面考虑,如网络,程序接口等。
    从语句上优化完了,再从磁盘读写方面去优化,是否需要升级硬件来提升。SQL Server 2005在性能優化方便是比2000的要好,有表分区功能,同时要评估表分区管理和维护难度。
    http://msdn.microsoft.com/zh-cn/library/ms345146(v=sql.90).aspx