LYWILL设计运营 - 网站运营与推广、开发技术、成功项目展示。

海量数据库查询优化思路

今天在工作中遇到一个问题,本来已经通过测试部门测试的程序,部署上线以后不能正常运行,检查后发现是因为线上数据量大导致的,最后通过在查询中增加对索引列的处理,以及缩小查询范围解决。在网上找到一篇文章,里面详细讲了查询优化的思路,感觉不错。

01:找专业的数据库管理员,给了我们一些建议系统底层优化的建议,对我们没实质性的进展,失败。

02:只能硬着头皮与同事们一起深入研究,发现SQL语句也很复杂,并没有想象的那么简单。

03:把比较复杂的SQL语句先分解成若干个简单的SQL语句,运行、失望,性能影响不大,失败。

05:里面有些多余的字段被SELECT出来的字段,去掉了,没有明显的进展,影响不大,失败。

06:SELECT 出来的东西,再进行了SUM操作,感觉内存里的处理数据过大,先进行SUM,再进行SELECT,没有明显的进展,影响不大,失败。

07:把表拆开成若干个表,没有明显的进展,影响不大,失败。

08:修改数据类型,把数值类型的长度、精度在变小点儿,影响不大,失败。

09:数值类型比较,例如日期类型的比较,不要转成字符再比较,人家已经这么做了,没这方面的缺陷。

11:查询条件的先后顺序调整,影响不大,失败。

12:将过滤条件放到子语句里,选出来的数据尽量小一些,影响不大,失败。

13:再看看索引,以前的开发人员索引设置得也比较合理,而且他们告诉我们,他们做测试优化索引,耗时会更多,去掉索引反而还会好一些。

14:经过这8个步骤,我是有些失望了、心情沉重,但是我不能把这个表现出现,还是继续表现得很自信,不管遇到什么困难,都需要给自己打气、给自己信心,男人要坚强、只能靠自己了。

15:接下来足足想了一晚上,问题会出在哪里?数据库的极限能力是多少?找谁咨询?2000W条数据不应该是Oracle的性能瓶颈呀,问题应该是我们身上。

16:继续坚信问题应该是在设置索引上,继续把重点突破口放在深入索引设置上,按不同的组合、不同的索引方式进行优化。

17:索引优化后,奇迹出现了,性能提高了100倍