客户问:我们觉得oracle数据库运行的sql有点慢,是不是迁移到分布式数据库会快一些?
老虎刘答:一般情况下,oracle数据库能满足大部分场景的业务需求.建议对问题系统做个性能分析,看看是不是做个优化就能解决问题.到目前为止,本人经手的绝大部分系统都可以通过性能优化(主要是SQL优化)达到预期性能指标,不需要迁移到分布式数据库.
下面列举几个SQL优化案例.
案例1: 设计与SQL写法
从下图的执行计划可以看到,这个sql执行了20+小时还没有执行完,中间结果集高达42.95亿,而涉及的表记录数只有85条.
sql文本:
select *
from app
where app.='2'
and app. in
(select (, '[^,]+', 1, level)
from ---这个表只有85条记录
where ='0000001' ----是主键
connect by level = TO_DATE(,'')= 'I')
OR
( = 'F' < 3)
AND ( = '1' is null);
表上存在一个三字段联合索引: (,,). 但是这个索引没有被使用(因为如果使用这个索引,SQL执行效率会更差), 执行计划使用的是全表扫描.
测试人员根据我的建议, 在测试环境里为表新建了一个两字段联合索引(这里省略了查看相关字段数据分布的步骤): ( , ),反馈如下:
一个简单的索引调整,效率提升2.5万倍.sql执行效率的提升,不但提升了客户感知,同时也大大降低了资源的使用(CPU/存储/内存).
点评:
这个sql如果放到分布式数据库,肯定也能有几倍的提升,但是消耗的资源还是差不多的. 联合索引选哪些字段做组合,字段的先后顺序都是大有讲究的.
案例4:写法与索引配合
这是oracle原厂大师(国内官方公众号有很多他的视频课程)最近出的一个小题目:
我理解的:即符合里面的条件,较少
我理解的history: end_dt
你的选择是?
(这里读者可以思考一下再往下看)
这种sql,很多开发人员可能不管谓词字段的数据分布情况,直接创建(,end_dt)两字段联合索引,因为有上面的条件,这个索引是低效的,优化器可能宁可全表扫描,也不用这个索引.
我想出题者的本意应该是让大家选"",但是我认为原sql的写法, 没有合适的索引能实现优化的目的,因为没法创建nvl(end_dt,sysdate+1)这样的函数索引.
我给出的优化方法是需要改写,然后再配合索引:
改写SQL,将SQL改成
>=(end_dt>l);
创建(end_dt,0)联合索引.不需要字段的参与,因为
(全文完)
”是将评分点对应到
投标文件的制作与上传指南
一、安装投标工具
二、点击【新建工程】-浏览按钮选择下载好的招标文件后点击【确定】,点击确定按钮后会跳出来“CA认证提示”,点击确定, 如果使用ca锁则选择“插入CA认证”,如果使用标证通(手机版CA)则选择“手机扫码认证”。
三、导入招标文件后,页面左边分别展示“浏览招标文件”、“投标文件格式”、“生成投标文件格式”三大模块。
其中“浏览招标文件”用于浏览导入的招标文件,“投标文件格式”用于制作投标文件,“生成投标文件”用于生成文件。
四、点击打开“投标文件格式”,选中“正文内容”,同时右键点击,会跳出“导入文件”、“重新制作”按钮。选中“导入文件”按钮将word格式或者pdf格式的投标文件导入。
五、点击“正文内容”左边“+”下拉选项展示的是招标文件的评标办法的评分项和评分点
六、鼠标右击评分点会展示“对应文档位置”、“删除节点对应” 。其中选中“对应文档位置”是将评分点对应到word格式或者pdf格式的投标文件的具体位置,便于评委在评标的时候浏览。“删除节点对应”即删除掉原本对应的位置,可重新选择对应位置。
七、将投标文件位置全部对应完毕后进入“生成投标文件”环节。首先是转换投标文件,可点击“批量转换”,可单独点击文档对应的“转换”按钮进行转换。
八、转换完成后对标书进行签章。点击“标书签章”进入签章页面,点击“电子签章”输入锁密码进行盖章。
十一、签章完毕后,预览标书确保内容无误后(预览标书不显示盖的签章)即可点击“生成标书”。点击生成标书时会跳出填写投标总价提示(部分评标办法无需填写)。填写完点击“确定”按钮。
十二、点击“确定”按钮后会跳出来输入锁密码提示,输入完密码等待系统自动生成标书
十三、系统生成完毕标书后会跳出来选择文件夹的提示,选择相应的文件夹保存标书即可。系统生成的标书有两份,一份加密标书、一份不加密标书。至此,标书制作完毕。
十四、投标文件制作完毕后,登录分散采购平台,点击【我的项目】菜单,找到对应项目点击“项目工作台“,点击“上传投标文件”菜单上传投标文件。
*请认真填写需求信息,我们会在24小时内与您取得联系。