首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
数据库
> 详细
数据库设计规范
时间:
2018-09-27 13:06:47
阅读:
182
评论:
0
收藏:
0
[点我收藏+]
标签:
扫描
tar
范围
表达
一个
触发器
sql语句
div
资源
数据库相关的开发&优化原则
为每个数据表创建聚集索引,以及其它必要的索引(根据业务需求识别经常要查询的字段)
数据表结构的定义应该优先考虑降低SQL查询的复杂性
优先使用唯一索引来保证字段值的不重复性(用异常来识别重复插入)
可适当增加冗余字段降低查询的复杂度
WHERE过滤条件要符合SARG原则
使用参数化查询,重用执行计划
共用数据库连接,避免反复打开。
尽量使用有序GUID,避免直接使用 newid()
禁止使用触发器,禁止使用存储过程,禁止使用CLR SP
避免在数据库中执行较复杂的业务逻辑(SP),或者复杂的数据转换、计算
尽量降低SQL语句的复杂性,可适当返回 粗粒度结果让 应用程序代码来处理
缺少索引的危害
I/O -> 内存 -> CPU , 压力全部变大。
由于需要扫描大量记录,导致语句运行很慢。
容易产生大量的锁,阻塞其它进程,以及被阻塞。
由于持有过多的锁,出现死锁的机率也会变大。
缺少索引的改进建议
为表指定主键
为外键字段创建索引
为一些重要的查询条件创建索引
关注执行计划中高成本的:扫描,联接,分组,排序。
创建索引的注意事项
索引不是越多越好,尤其要避免产生冗余索引。
只为频繁查询的参考字段创建索引。
创建高选择性的索引(符合条件的行数与总行数之比)。
索引值不得超过900字节
不建议创建包含索引(除非那个查询非常稳定非常重要)
冗余索引的危害
更新数据的SQL运行更慢,因为要维护索引。
浪费更多的磁盘资源。
耗费更多的维护成本。
SARG是什么?
SARG: Searchable Arguments
搜索参数 (SARG) 可指定精确匹配、
值的范围或由 AND 联接的两项或多项的连接,因此能够限制搜索范围。
SARG格式:
列 运算符 <常量或变量>
<常量或变量> 运算符 列
SARG 运算符包括 =、>、<、>=、<=、IN、BETWEEN,
有时还包括 LIKE(在进行前缀匹配时,如 LIKE ‘Fish%‘)。
SARG 可以包括由 AND 联接的多个条件。
非 SARG 运算符包括: NOT运算符 、函数调用 和 字段计算表达式。
不符合SARG的改进建议
有函数调用的:去掉函数掉用,调整语句。
字段计算表达式:将字段与常量分离。
使用 NOT:调整业务需求,使用一个较小的范围。
使用 NOT:根据业务需求,拆分表。
LIKE‘%XXX%’ :调整业务需求,改写为 LIKE ‘XXX%’
数据库设计规范
标签:
扫描
tar
范围
表达
一个
触发器
sql语句
div
资源
原文地址:https://www.cnblogs.com/hemajia/p/9712279.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
数据库进阶
2021-07-29
在 Oracle 数据库中执行 SQL 语句遇到特殊字符的转义方式
2021-07-28
Windows Logstash同步 Sqlserver 到Elasticsearch
2021-07-26
mysql数据库(11):恢复数据
2021-07-26
mysql数据库(9):常用查询的例子
2021-07-26
SQLAlchemy 多对多
2021-07-26
ClickHouse的JDBC连接
2021-07-26
Apache HBase 1.7.1 发布,分布式数据库
2021-07-26
数据库常用架构和同步工作原理
2021-07-26
MySQL数据库设计规范(仅供参考)
2021-07-26
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!