学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> SQL >> 一个有关多条件数据库查询的优化方法


一个有关多条件数据库查询的优化方法


在数据库编程中,管理人员需要经常从数据库中查询数据。当查询条件为确定时,我们可以明确用的SQL语句来实现,但是当查询条件为多个条件的动态组合时,查询语句会由于分支太多及IF语句的多重嵌套而变得相当复杂。在此,笔者提供了一种优化方法,运用本方法可以有效地减少查询语句的分支和数量以及IF条件语句的嵌套层数,从而提高程序的运行效率。

下面我们以一个简单的例子来说明,假设有一个名为employee的表,现在我们要从其中查询数据,条件有三个,由用户动态选择,如图1所示:

其中条件A、B、C之间是与的关系,A、B、C均为动态选择,可以取其中的一个、两个或三个,也可以一个都不选,当三个条件都不选择时则认为是无条件查询,按照通常的做法,判断方法如图2所示:

这样,最终的结果有8个,即有8条查询语句,分别是

1.select * from employee;
2.select * from employee where Age =C ;
3.select * from employee where Sex=B;
4.select * from employee where Sex=B and Age=C;
5.select * from employee where Name=A;
6.select * from employee where Name=A and Age=C;
7.select * from employee where Name=A and Sex=B ;
8.select * from employee where Name=A and Sex=B and Age=C;

显然这是比较烦琐的,而且用到了多重嵌套IF语句,因而在条件增多时,其复杂程度将大大增加。我们对它进行优化,方法如下:

首先定义一个字符串Str_Result用来存放组合条件的结果,开始时为空。

用程序语言描述如下:

if A <> "" then
Str_Result="where Name =A"
end if
if B <> "" then
if Str_Result="" then
Str_Result="where Sex=B"
else
Str_Result=Str_Result+"and Sex = B"
end if
end if
if C <> "" then
if Str_Result="" then
Str_Result="where Age =C"
else
Str_Result=Str_Result+"and Age=C"
end if
end if

最终的结果查询语句为:select * from employee + Str_Result。

显然,这种方法减少了组合的分支和if语句的多重嵌套,从而提高了程序的效率。

本方法的原理在于定义了一个单独的字符串来表示组合的结果,当该字符串经过条件A后其值为A的条件,经过条件B后其值则为条件A与B 组合的结果,而当经过条件C后其值则变成条件A、B、C的组合,从而减少了组合判断的分支,对于更多条件的组合,其效能将更加明显。

(T114)

技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

呵呵,这算法大大减少工作量啊

...
游客 发表于2008-7-10 14:25:02
学到很多,谢谢...
游客 发表于2008-7-10 14:24:06
 郁闷.内容太少了...
游客 发表于2008-5-23 21:42:16
对"一个有关多条件数据库查询的优化方法"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 一个有关多条件数据库查询的优化方法 相关内容
Google搜索中 一个有关多条件数据库查询的优化方法 相关内容
雅虎中 一个有关多条件数据库查询的优化方法 相关内容
Sogou搜索中 一个有关多条件数据库查询的优化方法 相关内容

相关软件 最新回复帖子:

·一个有关多条件数据库查询的优化方法
·妙笔生辉--书写效果(二)
·Fireworks轻松打造下拉导航条
·3Ds max多边形建模主要功能命令
·PS可选色与蒙板打造偏色人像艺术特效
·Photoshop渐变滤镜重塑照片色彩
·让文件井然有序:高手文件管理经验谈
·用Freehand创建发光字特效
·nesox让电子邮件营销原来如此轻松!
·妙笔生辉--书写效果(一)


  相关软件 一个有关多条件数据库查询的优化方法相关文章
用ADO管理SQL Server数据库及其设备 通用SQL数据库查询语句精华使用简介
Oracle中捕获问题SQL解决CPU过渡消耗 如何在Oracle数据库10g中跟踪SQL
SQL Server对文件内容进行全文检索查询 ORACLE中常用的SQL语法和数据对象
Oracle中使用SQL MODEL定义行间计算 在MySQL中执行SQL语句时的几个注意点
向你谈谈SQLPlus中的复制和粘贴技巧 热点关注:IBM将与微软开始激烈对决
关于SQL Server数据库的若干注意事项 50种方法巧妙优化你的SQL Server数据库
优化SQL Server服务器内存配置的策略 将SQL语句转换为符合VB.NET格式字符串
用MS SQL Reporting Services生成报表 ACCESS转化成SQL2000需要注意的问题
限制SQL Server只能让指定的机器连接 SQL Server数据库的数据汇总完全解析
几种简单的损坏控制文件的恢复方法 告诉你使用SQL Server 2005的3个理由