日期:2014-05-17  浏览次数:20428 次

请教一下,怎么提高查询性能?
请教下大家,如果数据表里有太多数据,比如几十万条,怎么样提高查询的性能?或者说下ADO.net里是否也有一些方法提高性能?

------解决方案--------------------
一般查询条件里用到的字段建立索引,exists代替in,not exists代替not in,
关联的表不要太多,适当的地方可使用子查询代替联合查询。。。

太多了,呵呵,自已baidu下吧
------解决方案--------------------
1、NOT IN操作符不能应用表的索引,建议用NOT EXISTS 或(外连接+判断为空)方案代替
2、UNION比union all多做了一步distinct操作。能用union all的情况下尽量不用union。 
3、3、查询时尽量不要返回不需要的行、列
4、尽量少用视图,它的效率低
5、创建合理的索引,对于插入或者修改比较频繁的表,尽量慎用索引
6、Between在某些时候比IN速度更快,Between能够更快地根据索引找到范围
7、大表查询WHERE后面的条件顺序影响,尽量将范围小的条件放在前面
8、没有必要时不要用DISTINCT和ORDER BY
9、使用in时,在IN后面值的列表中,将出现最频繁的值放在最前面,出现得最少的放在最后面,这样可以减 少判断的次数 
10、不要在事物使用SELECT INTO时,它会锁住系统表(sysobjects,sysindexes等等),阻塞其他的连接的存取

11、一次更新多条记录比分多次更新每次一条快,就是说批处理好
12、慎用临时表,临时表存储于tempdb库中,操作临时表时,会引起跨库操作。尽量用结果集和表变量来代替它。 
13、不要在一段SQL或者存储过程中多次使用相同的函数或相同的查询语句,这样比较浪费资源,建议将结果放在变量里再调用

……
还有很多,多看看大牛们的一些经验和建议。共同学习


------解决方案--------------------
这个问题可以写本书

另外:几十万条不算大数据
------解决方案--------------------
我存的都数据都是千万级的 几十万不算多吧。
------解决方案--------------------
几十万条数据还不算大。楼主可以考虑通过优化查询语句,主意创建合适的索引,使有条件查询的时候能够充分利用到索引。这是最基本的优化方式。

你前台程序的优化什么就不清楚
------解决方案--------------------
数据量不大,一般几十万数据如果中等复杂程度的查询需要10分钟,那么要考虑优化了,如果几分钟就能查出来,就还没必要,优化的确可以写一本书,如果你有基础,可以看看2005技术内幕里面的优化那一本书。另外,ADO.NET好像提供的是缓存来加快速度吧。但是一般都是从数据库层面去解决。另外,前端程序瓶颈往往在加载大数据量的地方,有些应用的确不允许分页而直接加载十万百万的数据,这些地方要重点优化
------解决方案--------------------
这样的数据量不应该查询慢的问题,关键还是从两方面的考虑一个是程序代码写的某些地方不规范
造成的,另外一方面是数据库表的设计有问题的也会造成具体的瓶颈问题。
------解决方案--------------------
在存储过程里面实现分页


------解决方案--------------------
二楼和四楼太狠了,把主要的都给说了,让后面的我们怎么拿分吗……太黑了……
我们这里稍微说一下几个比较常用的
exists 代替 in
用子查询
建立索引
使用存贮过程
不要使用游标
尽量不要使用dinstinct
------解决方案--------------------
不解释,来的太晚了