多表查询可以如何优化 ?
时间:2011-05-19
来源:互联网
简单来说,程序复杂了,SQL查询也很容易复杂起来,很可能到取数据会和4,5甚至更多表有关系,
这样不仅SQL会复杂,而且维护,调整,和其它处理都会比较复杂。
一般的优化方法就是优化 SQL, 不知道有没有其它更方便的办法?
我表达不怎么好,举个例子吧:
假如我最终要的是一个用户列表:
名字, 当前工资
<< < 1 2 3 > >>
1, 有一个用户表,user ( id,name)
2, 有基本工资表 , salary (user_id ,date,price)
当前工资是只本月1号到目前的工资,所以为了计算当前工资,需要从 工资表 中计算迄今为止的工资总额,
子查询就可以完成。 但是假如更复杂些, 工资分为 基本工资,奖金,罚款,加班报酬,报销 ,每个表都和 工资表 类似结构, 另外再增加些变态规则:
1, 基本工资 > 平均值 x2 的部分没收
2, 报销不能超过 基本工资+奖金+加班报酬 的 20%
3, 税收需要按照基本工资的级别来扣除 ( <1000 ,10%, < 2000 14%, < 3000 %23 >= 3000 30%)
4, 税收还要扣除奖金的 10%
5, 按最近工资倒序排列
6, 只列出基本工资 在 2000 - 5000 的人
.
.
相信这样再单纯用一条语句就不太可能了,但是要分多条语句的话,还要考虑分页,
在这类十分复杂的情况下,有哪些办法可以优化呢, (不包括硬件,架构。。。,仅考虑 SQL 和程序)
这样不仅SQL会复杂,而且维护,调整,和其它处理都会比较复杂。
一般的优化方法就是优化 SQL, 不知道有没有其它更方便的办法?
我表达不怎么好,举个例子吧:
假如我最终要的是一个用户列表:
名字, 当前工资
<< < 1 2 3 > >>
1, 有一个用户表,user ( id,name)
2, 有基本工资表 , salary (user_id ,date,price)
当前工资是只本月1号到目前的工资,所以为了计算当前工资,需要从 工资表 中计算迄今为止的工资总额,
子查询就可以完成。 但是假如更复杂些, 工资分为 基本工资,奖金,罚款,加班报酬,报销 ,每个表都和 工资表 类似结构, 另外再增加些变态规则:
1, 基本工资 > 平均值 x2 的部分没收
2, 报销不能超过 基本工资+奖金+加班报酬 的 20%
3, 税收需要按照基本工资的级别来扣除 ( <1000 ,10%, < 2000 14%, < 3000 %23 >= 3000 30%)
4, 税收还要扣除奖金的 10%
5, 按最近工资倒序排列
6, 只列出基本工资 在 2000 - 5000 的人
.
.
相信这样再单纯用一条语句就不太可能了,但是要分多条语句的话,还要考虑分页,
在这类十分复杂的情况下,有哪些办法可以优化呢, (不包括硬件,架构。。。,仅考虑 SQL 和程序)
作者: black_eye_ 发布时间: 2011-05-19
有多少员工? 估计会有多大的数据量? 似乎一般来说工资数据库 效率 很少去考虑的,因为表中记录不会有太多。
作者: ACMAIN_CHM 发布时间: 2011-05-19
逻辑是挺复杂,硬写就可以 ,数据量不会大
作者: rucypli 发布时间: 2011-05-19
工资系统做过,在表中保存计算公式,再循环替换表中相应字段,你指的优化是指什么方面?
作者: WWWWA 发布时间: 2011-05-19
从数据库中取数据的时候,有时候需要一些额外的逻辑判断,这些判断虽然可以用SQL完成,
但是会语句会比较长,也比较复杂,
我意思是是否可以通过程序上做一定处理,简化最终的SQL 查询?
但是会语句会比较长,也比较复杂,
我意思是是否可以通过程序上做一定处理,简化最终的SQL 查询?
作者: black_eye_ 发布时间: 2011-05-19
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28