1次查询优化的过程
来源:互联网 发布:js点击商品到详情页面 编辑:程序博客网 时间:2024/04/29 08:19
基于拥有CRM系统进行扩展的过程,有一个工单的操作,数据库中tc_worksheettc_worksheet_1_1 tc_worksheet_attr tc_worksheet_mattr tc_worksheet_xattr。工单数据同时存储在以上几张表中。
最开始的实现方案:直接使用SQL进行表关联,大概关联了十几张表,那个时候查询出我们需要的工单大概需要20分钟左右。
优化方案:使用存储过程+触发器的方式汇总一张冗余临时表的数据,在原始的工单表中建立触发器,当用户在crm系统中工单时,调用存储过程,汇总这些数据到冗余临时表。
这种缺点,存储过程中汇总的sql速度比较慢,导致用户在CRM系统中建立工单的速度受到了影响。
优化方案:由于影响了crm系统中工单的操作的速度,我们想通过异步的方式实现数据的冗余同步,找到了SQLServer中Job的实现方案。这种方案实现后,发现在insert时数据没有办法同步到冗余中间表,查找了原因,意外发现了一个问题,用户在CRM系统中创建完一个工单,触发器前后共执行了13次,猜测crm系统中可能是操作是首先在tc_worksheet插入主键,然后需要修改某一些这条数据中某一些字段的值,才导致触发器被多次执行。
优化方案:在工单原始表和工单冗余中间表中建立另外一个中间表B,当用户工单表执行触发器后把操作的工单的id插入到中间表B中(首先判断中间表B中是否存在对应的工单字段,发现中间表B中存在该工单id,则不进行操作,否则插入工单id),在Web程序中启动一个线程,间隔一段查询中间表B中是否存在新数据,存在的话,就执行存储过程汇总工单数据到冗余中间表,不存在则休眠,等待下一次查询。
暂时没有找到更好的方案了,欢迎大家批评指正。
- 1次查询优化的过程
- mysql 查询优化的过程
- 关联查询SQL的一次优化过程
- MySpace重写了六次, 优化过程
- hibernate级联查询执行n+1次sqlt语句问题(内含解决办法,优化方式)
- sql查询执行过程,语句优化,查询优化
- TCP3次握手/4次挥手的过程分析
- 嵌套查询的查询优化
- 美国次贷危机的演变过程
- TCP的3次握手过程
- 数据库的查询优化技术1
- 对查询的优化
- 对查询的优化~
- 对查询的优化~
- 的查询优化技术
- SQL的查询优化
- SQLite的查询优化
- SQLite的查询优化
- ibatis常用的数据库语句
- 深入浅出Java Dom4j读取XML
- Comparator用于Collections.sort
- Windows下Qt使用boost
- Fragment学习之使用接口回调的方式实现Fragment与Activity通信
- 1次查询优化的过程
- Eclipse For Android 代码自动提示功能
- java开发中的23种设计模式详解
- 手势
- 在自己的服务器上做网站服务,发布网站,解决动态IP、无公网IP问题
- FizzBuzzWhizz
- mysql 安装出现 Install/Remove of the Service Denied!错误
- 因為落葉,懂得了珍惜
- 创业失败的七个原因及解决之道