在项目中,开发为了方便用户(也为了方便自己),很多都会在前端基类弄个万能查询的模块,在做介面时调一下就能使用了,它能列出很多的字段,让用户自己选择字段及表达式,条件与条件组合,可以几乎无限的加条件上去。用户用得也很爽,可以自由组合条件了。在一些特别复杂的条件时,也不
需要开发去另外改程序,用户也可以通过这个搞定,所以这种功能很受欢迎。
但这种功能方便了用户和开发,对于数据库性能来说,它是不利的。
其一. 很多字段是没有索引的。
      其二. 条件中可能用到了很多like '%' 之类,多一个%或少一个,会关系到联合索引有没被用到。
      其三. 有些实现方式是用动态sql方式,性能不用说了。
      其四.用户组合出来的查询条件很离谱,如果再碰上这个结果集量很大。
      其五. 用户输入特殊符号或字符,而代码是用拼接方式且没做处理,或没有采用绑定变量方式。
     ......
等等。DBA可能提出很多条说法,以证明它对数据库可能的种种后果。 能说服当然最好,但有时是无力。
这时只能适应,但有几点是要坚持的。
      1. 一定要尽量控制好万能查询模块的范围,不要让它被滥用,如对于表关联复杂,数据量大的查询上,一定要坚持用少量固定查询的方式。
      2. 对于一定要使用此模块的介面,与开发协商好要显示哪些字段,排除掉一些不必要或可能会引发性能问题的字段。
      3. 有一些一定要用此功能,但很有可能有恶果的介面,要严密监控,并留好后路。
总之,功能的便利性与数据库的性能间,平衡和沟通有时特别重要。
MAIL: xcl_168@aliyun.com
Blog:http://blog.csdn.net/xcl168

(16)万能查询还是万恶查询?相关推荐

  1. MyBatis:万能Map和模糊查询(狂神)

    当写修改的方法时,里面的参数是个User对象,那么在UserMappwe.xml中values中要和对象的属性名相对应,并且需要创建对象,输入它的多个属性值需要更改的进行修改,比较麻烦,就可以考虑使用 ...

  2. 16个优秀的域名查询工具

    对于一个网站来说,一个好记并有意义的域名是非常重要的.一个好记的域名,可以帮助你的读者,记住你的网站.另外,对于SEO来说,域名有非常大的权重,对你网站的排名也有深远的意义.可以说,一个好的域名可以使 ...

  3. mysql子查询日期比较_数据分析系列 16/32 | MySQL中子查询与联合查询

    前面说了很多MySQL中的查询,比如条件查询.分组聚合查询.连接查询,今天来说一下另外两个非常的重要的查询,MySQL中的子查询和联合查询. PART01 子查询 子查询也称嵌套查询,是将一个查询语句 ...

  4. mysql去掉两个最高分_数据分析系列 16/32 | MySQL中子查询与联合查询

    前面说了很多MySQL中的查询,比如条件查询.分组聚合查询.连接查询,今天来说一下另外两个非常的重要的查询,MySQL中的子查询和联合查询. PART 01 子查询 子查询也称嵌套查询,是将一个查询语 ...

  5. mongodb 查询 mysql_MongoDB 基本查询使用

    刚才前面发了Windows下安装使用MongoDB数据库,觉得就这样多吊人胃口啊,所以就顺便把一些基本的查询方法写出来,供大家参考学习,如果写的有不对的地方还请多多批评. 我想看过前面写的" ...

  6. 【mybatis学习记录】mybatis的各种查询 一对一关联查询(4种方式) 一对多(2种方式)

    文章目录 一对一 方式一: 方式2 方式3 方式4 一对多查询(2种方式) 方式2 一对一 如:通过订单id查询订单的时候,将订单关联的用户信息也返回. 首先建库建表: 新建实体类: @Builder ...

  7. Web框架之Django_05 模型层了解(单表查询、多表查询、聚合查询、分组查询)

    阅读目录 一.Django ORM 常用字段和参数: 二.单表查询 三.多表查询 基于双下划线的多表查询 四.聚合查询和分组查询 摘要: 单表查询 多表查询 聚合查询 分组查询 一.Django OR ...

  8. 子域名查询DNS记录查询

    目录 子域名信息查询 Layer子域名爆破机 subDomainBrute 利用google查询 HTTP证书查询 DNS记录查询脚本 IP转换为经纬度 利用网页获取对方经纬度信息 首先关于DNS域名 ...

  9. mysql查询子表的语句_MySQL基本SQL语句之单表查询、多表查询和子查询

    一.简单查询: 1.基本语法: SELECT * FROM tb_name;//查询全部 SELECT field1,field2 FROM tb_name; //投影 SELECT [DISTINC ...

最新文章

  1. 【HIMI转载推荐之三】新手教程之如何向APP STORE提交应用
  2. artTemplate基本用法
  3. 《程序员修炼之道》笔记(八)
  4. 潜在语义分析原理以及python实现代码!!!!
  5. 创业公司的容器化之路
  6. Java语言用于定义接口的关键字是_定义类的保留字是(__)定义接口的保留字是(__);...
  7. 指纹特征点提取代码matlab代码,科学网—MATLAB特征提取代码 - 蒋样明的博文
  8. 用VC实现GIS系统基本功能
  9. 关于centos启动报错:Failed to start Crash recovery kernel arming的解决方案
  10. 未定义jm matlab,math – 使用Jm 1 = 2mj(m)-j(m-1)公式在MATLAB中计算bessel函数
  11. word如何让单页变横向
  12. Atitit 团队激励 理论与措施 目录 1. 马斯洛需求理论 1 2. 赫兹伯格双因素理论 1 3. X理论y理论 1 4. 期望理论。。 1 1.马斯洛需求理论 激励方法 福利 奖金
  13. 用python祝节日快乐_节日快乐祝福语有哪些?
  14. 儒家文化圈孕育人工智能新文明
  15. Spring中的Interceptor拦截器中使用@Autowired注解,在运行时会出现空指针
  16. 从平头哥讲起,谈谈全域旅游,说说为什么要做全栈工程师
  17. 过滤器Filter方法详解(init,doFileter,destory)
  18. 深度学习算法之-SSD(一)
  19. 一个Dom绑定多个事件
  20. 90后准程序员写给前辈们的一封信

热门文章

  1. 听说这两款是最适合程序员编程的电脑
  2. Python数据分析-时间序列预测法
  3. C语言实现画爱心(两种方式画法)
  4. 2020牛客NOIP赛前集训营-普及组第三场C牛半仙的妹子树
  5. 如何把源代码格式复制到WPS文档中
  6. java添加tomcat_Java以及Tomcat配置
  7. 深入探讨大数据权限管理方案-从哲学到技术
  8. Stm32F4以太网远程固件升级BootLoader踩过官方的坑
  9. iphone开发中内存利用说明
  10. 2019 TIP之ReID:Learning Modality-Specific Representations for Visible-Infrared Person Re-Identificati