• 数据库重构(一):字段合并


          刚到公司不久,才知道公司产品在性能上有问题,数据量和并发数一大,系统就很慢,需要优化。在和公司同事讨论某模块优化,通过sql无法优化,因为系统sql是判断5个纬度,一个用户id, 一个机构id,一个岗位id, 还有级别判断和是否公共。

          有5个”or“组成查询,表数据一大就表扫描,性能很差,但业务要求和系统要求这样判断。即使在表中这五个字段都建索引,速度也不会快。太多"OR"了,SQL Server 查询分析器无法优化。
     
        SQL语句这时无法优化了,但是如果重新设计表又对现有系统改变太大了,只有对表进行微调。

        讨论两天后,终于达成一致:
         
        1,将一个用户id, 一个机构id,一个岗位id,是否公共存四个字段合并成一个字段中,因为我们系统只记录一个,只要符合一个可以了。在再该字段建立索引,程序在前台传进个字符窜,包含上面四个,然后用in来匹配。
      
        这样重构,速度比以前要快,程序修改也比较少,是一个比较平衡的解决方法。但这不符合数据库的设计范式:一个字段有多个意义。设计数据库时不要使用,
    只是在没办法优化的情况可以考虑。

  • 相关阅读:
    使用eclipse新建一个SWT工程
    C++类的构造函数
    D3D编程的常见报错及解决
    D3D窗口的初始化
    C++联合体的内存使用
    QT程序如何编译
    Restart
    HTML
    信号、槽位及布局
    QT对话框程序
  • 原文地址:https://www.cnblogs.com/zping/p/1133715.html
Copyright © 2020-2023  润新知