Sql优化

对sql进行一些汇总,文章内容全部来源网络,然后自己加以总结,
参考链接:https://www.cnblogs.com/cnzxy/p/9392721.html
https://www.cnblogs.com/sheseido/p/5825441.html
https://www.cnblogs.com/aspwebchh/p/6652855.html

sql优化:

避免全表查询:
(下列很多操作都会放弃使用索引)
(1)避免在 where 子句中对字段进行 null 值判断
(2)避免在 where 子句中使用!=或<>操作符
(3)避免在 where 子句中使用 or 来连接条件
(4)in 和 not in ,like 也要慎用,可用exists 代替in(子查询中的表小,就用in,否则就用exists; not in 对内外表都是全表扫描,not exists 子查询依然能用到索引 ; 对于连续的数值,能用 between 就不要用 in )
(5)避免在where子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描
使用索引:单独详说…
其他:
(1)减少子查询
(2)一个表的索引数最好不要超过6个
(3) 索引列不重复 (当索引列有大量数据重复时,SQL查询可能不会去利用索引)
(4)尽量使用数字型字段。引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了
(5)使用 varchar/nvarchar 代替 char/nchar ,因为首先变长字段存储空间小,在一个相对较小的字段内搜索效率显然要高些。
(6)不要使用 “*” (会查出很多,无用东西,浪费时间)
(7)不要有超过5个以上的表连接(JOIN)

索引:

索引有两种,聚集索引和非聚集索引,主要作用是提高sql性能加快数据 查询 的速度减少系统响应时间
聚集索引(主键):表记录的排列顺序和索引的排列顺序是一致的
非聚集索引:表记录的排列顺序和索引的排列顺序不一致
建议建立索引的列:
1)定义主键的列
2)定义有外检的数据列
3)经常查询的数据列
4)经常在where语句中用到的列
5)经常出现在order by、group by、distinct后面的字段

不建议建立索引的列:
1)查询很少涉及的列
2)定义为text,image,bit数据类型的列
3)经常存取更新的列
4)索引的数目不能太多(索引存放时按照一定规则来存放的,update, insert into,delete 操作会改变索引排序,速度会降低)

索引的创建
CREATE INDEX index_name ON table_name (col_name)(多个列使用逗号隔开)
index_name 索引名称 table_name 表名称 col_name 列名称
查看索引 show index from table_name
不要在主键上创建索引(主键会自动创建索引)

删除索引
(1) DROP INDEX index_name ON table_name
(2) ALTER TABLE table_name DROP INDEX index_name

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值