(16)万能查询还是万恶查询?

来源:互联网 发布:pdf福昕阅读器 mac 编辑:程序博客网 时间:2024/06/05 01:17
     在项目中,开发为了方便用户(也为了方便自己),很多都会在前端基类弄个万能查询的模块,在做介面时调一下就能使用了,它能列出很多的字段,让用户自己选择字段及表达式,条件与条件组合,可以几乎无限的加条件上去。用户用得也很爽,可以自由组合条件了。在一些特别复杂的条件时,也不
需要开发去另外改程序,用户也可以通过这个搞定,所以这种功能很受欢迎。
     但这种功能方便了用户和开发,对于数据库性能来说,它是不利的。
      其一. 很多字段是没有索引的。
      其二. 条件中可能用到了很多like '%' 之类,多一个%或少一个,会关系到联合索引有没被用到。
      其三. 有些实现方式是用动态sql方式,性能不用说了。
      其四.用户组合出来的查询条件很离谱,如果再碰上这个结果集量很大。
      其五. 用户输入特殊符号或字符,而代码是用拼接方式且没做处理,或没有采用绑定变量方式。
     ......

    等等。DBA可能提出很多条说法,以证明它对数据库可能的种种后果。 能说服当然最好,但有时是无力。
  这时只能适应,但有几点是要坚持的。
      1. 一定要尽量控制好万能查询模块的范围,不要让它被滥用,如对于表关联复杂,数据量大的查询上,一定要坚持用少量固定查询的方式。
      2. 对于一定要使用此模块的介面,与开发协商好要显示哪些字段,排除掉一些不必要或可能会引发性能问题的字段。
      3. 有一些一定要用此功能,但很有可能有恶果的介面,要严密监控,并留好后路。

  总之,功能的便利性与数据库的性能间,平衡和沟通有时特别重要。

MAIL: xcl_168@aliyun.com
Blog:http://blog.csdn.net/xcl168
0 0