数据库索引优化与规范
时间:2011-11-11
来源:互联网
不知道是我孤陋寡闻,第一次听公司某个人大道理的:“数据库设计规范,一个表最多不超过2个索引”,而我坚持认为:
从没听过这种形式化数目一回事,我始终认为:索引的建立个数应该依据使用场景来确定,就好像10次操作数据表,9次都是读取,只有1次是属于更新方面操作。所以读取的性能跟更新的性能权衡,我始终坚持应该站在多数用户的性价比考虑。。
好几次类似这方面争论了,我不知道是他真理解了还是那么形式化,我都很受不了,之前有一次谈过时的 asp.net网站 跟asp.net 应用程序的 项目升级更替问题,被他那种错了还说的很肯定对的语气给雷倒到很无语,都不想争。。。
还有很多数据量明显在至少保守看5年内是无非突破到50万的,不知道是他钻牛角尖还是按程序员思路来做产品,唉,搞的一个明明就企业网站稍微复杂点的普通行业网站,吹嘘的要搞成阿里巴巴网站一样的高性能技术,有时我都很无语:人家在硬件\分布式 、技术科研累计那么久,跟人家比个毛,提鞋都没,再看看这个项目半年内被几个水平参差不齐的4个程序员接替搞的,超级的又卡又乱。。。
=========================================================
发太多牢骚了,还是让专家来评判我的观点正确与否。
场景需求:
某产品表数据量12万左右,按他的理解以后的以后会达到百万数据量,按我的分析和估算,我觉得5年内不会超过50万,5年后这家小公司还在与不在还真是个未知数。。
产品表的字段非常多,里面的数据因为开头没规划好,导致很多本来应该必填的Int,结果字段设计的都为可空类型,具体导致整个项目的拆装箱性能瓶颈这个就不多讨论。。
现在按他的开发需求,写了7个较复杂的SQL语句,受他的形式化要求限制,SQL语句我自认为精简优化到不可优化,但查询性能多数都在3秒多,部分复杂的需要达到10秒。。后面我通过数据库优化顾问工具,进行分析查询性能,建立了对应的大概5~6个索引后,基本上查询的性能都稳定在最多不超过1秒的查询性能。这时候,我闷了,这么多索引数目他一直认为这样不可以,但除了优化索引方式外,实在无非再进行提高性能。。。后面我说要不具体建立索引后再看看插入‘更新 方面的性能影响。。。
最后他也实在没更好方法,就只好默认这样尝试。。。。弄的我心里优化过程非常的纠结。。。
从没听过这种形式化数目一回事,我始终认为:索引的建立个数应该依据使用场景来确定,就好像10次操作数据表,9次都是读取,只有1次是属于更新方面操作。所以读取的性能跟更新的性能权衡,我始终坚持应该站在多数用户的性价比考虑。。
好几次类似这方面争论了,我不知道是他真理解了还是那么形式化,我都很受不了,之前有一次谈过时的 asp.net网站 跟asp.net 应用程序的 项目升级更替问题,被他那种错了还说的很肯定对的语气给雷倒到很无语,都不想争。。。
还有很多数据量明显在至少保守看5年内是无非突破到50万的,不知道是他钻牛角尖还是按程序员思路来做产品,唉,搞的一个明明就企业网站稍微复杂点的普通行业网站,吹嘘的要搞成阿里巴巴网站一样的高性能技术,有时我都很无语:人家在硬件\分布式 、技术科研累计那么久,跟人家比个毛,提鞋都没,再看看这个项目半年内被几个水平参差不齐的4个程序员接替搞的,超级的又卡又乱。。。
=========================================================
发太多牢骚了,还是让专家来评判我的观点正确与否。
场景需求:
某产品表数据量12万左右,按他的理解以后的以后会达到百万数据量,按我的分析和估算,我觉得5年内不会超过50万,5年后这家小公司还在与不在还真是个未知数。。
产品表的字段非常多,里面的数据因为开头没规划好,导致很多本来应该必填的Int,结果字段设计的都为可空类型,具体导致整个项目的拆装箱性能瓶颈这个就不多讨论。。
现在按他的开发需求,写了7个较复杂的SQL语句,受他的形式化要求限制,SQL语句我自认为精简优化到不可优化,但查询性能多数都在3秒多,部分复杂的需要达到10秒。。后面我通过数据库优化顾问工具,进行分析查询性能,建立了对应的大概5~6个索引后,基本上查询的性能都稳定在最多不超过1秒的查询性能。这时候,我闷了,这么多索引数目他一直认为这样不可以,但除了优化索引方式外,实在无非再进行提高性能。。。后面我说要不具体建立索引后再看看插入‘更新 方面的性能影响。。。
最后他也实在没更好方法,就只好默认这样尝试。。。。弄的我心里优化过程非常的纠结。。。
作者: datahandler 发布时间: 2011-11-11
我感觉还是用实际问题来说话,概念就是概念,支持楼主
作者: koumingjie 发布时间: 2011-11-11
优化就是一个适度量。 没有最优量。
LZ 也不必为了让他明白而明白,很多时候不是道理在不在,而是人自己愿不愿承认的问题。
实践才是硬道理
LZ 也不必为了让他明白而明白,很多时候不是道理在不在,而是人自己愿不愿承认的问题。
实践才是硬道理
作者: OrchidCat 发布时间: 2011-11-11
參照
数据库性能
http://technet.microsoft.com/zh-cn/library/ms190619%28SQL.90%29.aspx
优化索引
http://technet.microsoft.com/zh-cn/library/ms190910%28SQL.90%29.aspx
数据库性能
http://technet.microsoft.com/zh-cn/library/ms190619%28SQL.90%29.aspx
优化索引
http://technet.microsoft.com/zh-cn/library/ms190910%28SQL.90%29.aspx
作者: roy_88 发布时间: 2011-11-11
5年内不会超过50万,我觉得就不必考虑100万以后的事
作者: pengxuan 发布时间: 2011-11-11
http://topic.csdn.net/u/20091013/15/9f058df7-4d29-47bf-a338-b63fcab2abc0.html
看看这个帖子里面的优化部分。
看看这个帖子里面的优化部分。
作者: fredrickhu 发布时间: 2011-11-11
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28