zoukankan      html  css  js  c++  java
  • 数据库重构(一):字段合并

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

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

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

  • 相关阅读:
    (4.24~4.30)
    (4.17~4.23)
    (4.10~4.16)
    FFT题集
    kd树的构造与搜索
    schtasks命令
    关于[WinError 10054] 远程主机强迫关闭了一个现有的连接。
    数据去重复
    将ppt文档转换成pdf
    mvc上传
  • 原文地址:https://www.cnblogs.com/zping/p/1133715.html
Copyright © 2011-2022 走看看