请教一下,怎么提高查询性能? 请教下大家,如果数据表里有太多数据,比如几十万条,怎么样提高查询的性能?或者说下ADO.net里是否也有一些方法提高性能? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一般查询条件里用到的字段建立索引,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 BY9、使用in时,在IN后面值的列表中,将出现最频繁的值放在最前面,出现得最少的放在最后面,这样可以减 少判断的次数 10、不要在事物使用SELECT INTO时,它会锁住系统表(sysobjects,sysindexes等等),阻塞其他的连接的存取11、一次更新多条记录比分多次更新每次一条快,就是说批处理好12、慎用临时表,临时表存储于tempdb库中,操作临时表时,会引起跨库操作。尽量用结果集和表变量来代替它。 13、不要在一段SQL或者存储过程中多次使用相同的函数或相同的查询语句,这样比较浪费资源,建议将结果放在变量里再调用……还有很多,多看看大牛们的一些经验和建议。共同学习 数据量不大,一般几十万数据如果中等复杂程度的查询需要10分钟,那么要考虑优化了,如果几分钟就能查出来,就还没必要,优化的确可以写一本书,如果你有基础,可以看看2005技术内幕里面的优化那一本书。另外,ADO.NET好像提供的是缓存来加快速度吧。但是一般都是从数据库层面去解决。另外,前端程序瓶颈往往在加载大数据量的地方,有些应用的确不允许分页而直接加载十万百万的数据,这些地方要重点优化 二楼和四楼太狠了,把主要的都给说了,让后面的我们怎么拿分吗……太黑了……我们这里稍微说一下几个比较常用的exists 代替 in用子查询建立索引使用存贮过程不要使用游标尽量不要使用dinstinct 数据库换了局域网,不能用了 急啊,一个简单的SELECT语句,请高手们帮忙啊。 如何避免多个用户同时执行一个存储过程或其中的一段SQL 请问在sql server如何得到某个数据库对象(例如存储过程)的最后修改时间? 如何设计数据库使得它合理、优秀! SQL SERVER 除了日志满了不能连接外还有什么情况下会导致不能连接?(网络及配置都是好的) 求助:有关数据库密文索引 SQLSERVER里不同数据库里的表可以复制吗?如何现实? sql server 表的同义词 vc中如何執行此存儲過程 sql 行转列问题 SQL语句中单字段对应多条记录
关联的表不要太多,适当的地方可使用子查询代替联合查询太多了,呵呵,自已baidu下吧
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或者存储过程中多次使用相同的函数或相同的查询语句,这样比较浪费资源,建议将结果放在变量里再调用……
还有很多,多看看大牛们的一些经验和建议。共同学习
我们这里稍微说一下几个比较常用的
exists 代替 in
用子查询
建立索引
使用存贮过程
不要使用游标
尽量不要使用dinstinct