首页 新闻 会员 周边 捐助

关于 sql 性能问题

0
悬赏园豆:30 [已解决问题] 解决于 2013-10-29 11:53

1. 字段设为 not null,加默认值, 对性能是提高还是降低

2. 查询时, 在字段上加上函数处理和查出列在代码里处理,哪种性能高

例: SELECT SUBSTRING(col,1,3)  FROM table , 直接语句做处理

  SELECT col FROM table , 先查出来,再在代码里处理, 哪种性能好

3. 关于频繁对数据库数据更新(一天更新上千万次), 有没有什么好的解决方案

sql
jerry128的主页 jerry128 | 初学一级 | 园豆:31
提问于:2013-10-28 17:46
< >
分享
最佳答案
0

1、最好不要允许空值,这个会影响处理速度(不是太明显)。

2、查询时,在数据库加函数肯定会影响数据库的响应速度,在C#上处理,则会影响代码执行速度。这个应该根据具体的情况选择。

3、对于上千万次/每天的更新,没遇到过,不过可以考虑下横向分表和读写分离。

收获园豆:30
幻天芒 | 高人七级 |园豆:37205 | 2013-10-29 00:31
其他回答(3)
0

第一个问题, 主要看需求, 我觉得 对性能的影响不大, 如果不需要默认值, 当然null应该更好,  求高人指点!

第二个, 这个明显程序里处理性能高,看你的复杂度,自己衡量了。

第三个的话, 感觉好像是 读写库分离的解决方案了, 如果更新不是实时的也可以, 把需要更新的数据进行批量操作。

hpze2000 | 园豆:109 (初学一级) | 2013-10-28 17:52
0

1.加默认值应该能提高部分性能,但增加了空间

2.肯定是后者好,数据库访问应该是能简单就简单,放在程序中处理性能会更好

3.没办法,上千次不算多

56180825 | 园豆:1749 (小虾三级) | 2013-10-28 19:15
0

1 看你的业务需求,如果在取数据时有某个字段,需要做ISNULL判断时,表中最好是加Not NULL限制,因为在查询时尽量不要在where 后面用计算函数

2 个人感觉,在SQL中做判断是比较好时的,因为都是针对IO操作,而把数据通过程序加载到内存之后,处理速度上就不是一个级别的了

3 上千万次的更新..........提升硬件肯定是一方面,然后减少表中的索引这个肯定是有好处的,因为主要是写,所以索引越少越好,其它办法肯定还有,只是我没接触过.

Zery | 园豆:6151 (大侠五级) | 2013-10-28 19:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册