首页 > 数据库 >SqlServer(七)数据库优化

SqlServer(七)数据库优化

时间:2023-03-27 10:02:38浏览次数:32  
标签:name where 数据库 SqlServer 索引 全表 Table 优化 select

1、对查询进行优化,尽量避免全表扫描(select * from Table), 首先考虑在where及OrderBy使用的列加索引。

2、尽量避免在 where 语句中对字段进行 null 值条件搜索,否则将导致引擎放弃使用索引,从而进行全表扫描,如:

select name from Table where name is null;可以在name列设置默认值,确保该列没有null值,

 查询语句修改后:select name from Table where name = "默认值"

3、并不是所有索引对查询都有效,SQL是根据表中的数据来进行查询优化的,当索引列有大量重复数据时,查询可能不会 去利用索引。

4、索引并不是越多越好,索引固然可以挺高相应的查询速度,但同时也降低了 Insert和 Update的效率。

因为Insert和Update时可能会重建索引。一个表的索引数最好不要超过6个。

5、尽量使用数字型字段,若只含数值的字段尽量不要定义为字符型,这样会降低查询和连接的性能,并会增加存储开销。

6、尽量避免where语句中使用 "!=" 或 "<>" 操作符,否则引擎将会放弃使用索引而进行全表扫描。

7、尽量避免where语句中使用 or 来连接条件,否则引擎将会放弃使用索引而进行全表扫描。

如 select name from Table where num = 1 or num = 2;

  修改后:select name from Table num  = 1 union all select name from Table where num = 2;

8、int、not in 、like条件查询,引擎也会放弃使用索引而进行全表扫描。

9、尽量避免where语句中对字段进行表达式操作,引擎也会放弃使用索引而进行全表扫描。

如:select name from Table where num/2=50 

  修改后:select name from Table where num = 2 * 50;

10、exists 可代替 in 使用

select name from Table where id in (1,2,3)

    select name from Table where id exists (1,2,3)

11、尽量避免使用游标,因为游标的效率低。

标签:name,where,数据库,SqlServer,索引,全表,Table,优化,select
From: https://blog.51cto.com/u_15949341/6151262

相关文章

  • 关于数据库分库分表的一点想法
    作者:京东物流 何小坡1开篇面对数据的激增,相信大家也都有分库分表的一些方案,这次的这个分享,算是自己的一个想法,可以当做一个参考方案,也欢迎相互讨论。话不多说,直接进入主......
  • SqlServer日期格式转换
    常用:SELECTCONVERT(VARCHAR(100),GETDATE(),24)--:10:57:47SELECTCONVERT(VARCHAR(100),GETDATE(),108)--:10:57:49SELECTCONVERT(VARCHAR(100),GETDATE(),......
  • 关于数据库分库分表的一点想法
    作者:京东物流 何小坡1开篇面对数据的激增,相信大家也都有分库分表的一些方案,这次的这个分享,算是自己的一个想法,可以当做一个参考方案,也欢迎相互讨论。话不多说,直接进入......
  • 数据库表数据空洞处理
    查看数据库表使用情况//showtablestatus是有缓存的,执行前最好先执行以下语句ANALYZETABLE表名;//update_time列表示表数据最后修改时间showtablestatus;查......
  • 听大神论系统优化
    1.一:mycat中间件(做路由)2.二:分库,分区,分片,单库分表3.三:mysql集群4.四:大数据量在数据采集和数据分析都会遇到瓶颈5.五:存储引擎:mysun(数据量大的时候锁表)i......
  • 对数据库操作,竟然忘记添加where条件
    记得前一阵子,对数据库进行操作的时候,竟然忘记添加where条件了,当时很是捉急本人觉得,虽然这个问题,很小,但是非常重要,在这里就不再啰嗦,大部分搜到这篇文章的同学们,现在应......
  • Python实例讲解 -- 操作数据库 附mysqldb win32 py2.7下载
    mysql是一个优秀的开源数据库,它现在的应用非常的广泛,因此很有必要简单的介绍一下用python操作mysql数据库的方法。python操作数据库需要安装一个第三方的模块,在http://mysq......
  • mysql jdbc 通过SSH Tunnel连接MySQL数据库
    1.pom.xml参考JDBC通过SSHTunnel连接MySQL数据库<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifa......
  • [ Linux ] swap 分区优化
    https://www.cnblogs.com/yeungchie/swappinessThiscontrolisusedtodefinehowaggressivethekernelwillswapmemorypages.Highervalueswillincreaseagg......
  • gomock优化diff展示
    使用gomock时可以调用EXPECT()为你的mock对象设置各种期望和返回值,用于验证期望值和运行时的值是否一致。通常情况下可以通过gomock来清晰的看出期望值和真实值的区别,但是......