sql语句写法注意项
来源:互联网 发布:王祖贤 倩女幽魂 知乎 编辑:程序博客网 时间:2024/05/21 11:06
作为与SQL相关的程序员的要求,可以大大减少项目后期的“擦屁股”工作量。自己深有体会。
节选:
a)使用尽量少的表联查
b)尽量缩小数据扫描范围
c)尽量避免子查询
d)尽量使用索引
e)尽量使用选择度高的索引
f)尽量降低排序的发生
g)尽量降低内存、硬盘的读取次数与排序次数
2.避免问题
a)过于复杂的SQL语句
如:多表联查、联合、子查询等
l彻底优化后可能无法提高性能
l执行计划解释起来有困难
l可能存在与操作系统有内在联系的隐患
l难以解决SQL中存在的问题
b)过于复杂的模型设计和编码
l过多的字段、表、视图等
l过多的索引、限制键、触发器等
l过于复杂的算法、业务逻辑
l过多的冗余字段、冗余数据
l蹩脚的SQL语句
c)太多的假设与不假思索
l相信DBA可以解决所有的问题
l相信ORACLE足够智能,以至超越人脑的水平
l相信性能可以通过硬件得以解决
l设计、开发阶段没把性能的考虑放在眼里
l相信“时间紧迫”,没工夫考虑太多问题
3.指导思想
a)写出简洁、明了、高效的SQL语句
......
a. 格式 select 。。。【from。。。where 。。。order by。。。having。。。group by。。。】。
b. Select语句的执行顺序是:
1. from 将给定的表,关系,集合等等组合成一个大表。
2. where 从刚在的表中抽出符合条件的记录组成一个表。
3. group by 在刚生成的表中以字段的内容为标准分类汇总成一个表。(注意:它里面一定要带select中
用到的除了公式意外的所有字段。这里说的公式是指要分类汇总的主题。)
4. having 在刚生成的表中抽出符合条件的记录组成一个表。
5. order by 在刚生成的表中进行排序。
6. select 在抽取制定的字段组成一个集合。
c. select中from语句的概念:
1. 按照我们老师的思想from中用A,B,C来合并三个表,用in 或not in语句是非王道破坏了数据库关
这个概念(虽然本人那么认为,但是应该跟着老师的思路毕竟他比我见过世面)。我认为既然效率速度等方
面没有多大的区别的情况下能用为什么不用呢?我用这个反而比用join更清楚。等到不能用时再用join
2. 最重要的概念(本人完全同意并一直真么做的)《只要是结果是二维表的就应该用SQL语句解决不
要把它分成小的SQL片段》。这样程序就一次性在SQL服务器上操作,不用频繁的访问数据库来降低系统的
效率。当然了你一个SQL解决不了的情况下应该用几个但是尽量少用,注意不要钻牛角尖说要一定用一个
SQL语句结果耽误工程就不行了。先不要管老师的说法先已解决问题为前提(虽然老师强调不要养成这样的
习惯,但是这个纯粹是个人看法仅供参考,我也希望人人想老师那样一句话来解决问题但是你行吗?)
d. 用join连接几个表的时候,应该遵循将主要的表用于内连(直接用jion)附加的表用左连(left join)这
样不会出现混乱。
1. sql多表连接查询inner join, left join , right join ,full join ,cross join
2. inner join,full outer join,left join,right jion内部连接 inner join两表都满足的组合full outer 全连两表相同
的组合在一起,A表有,B表没有的数据(显示为null),同样B表有A表没有的显示为(null)
A表 left join B表左连,以A表为基础,A表的全部数据,B表有的组合。没有的为null
A表 right join B表右连,以B表为基础,B表的全部数据,A表的有的组合。没有的为null
- sql语句写法注意项
- access 中sql语句之“like” 语句的注意写法
- access 中sql语句之“like” 语句的注意写法
- 有关sql写法注意
- sql语句写法
- SQL语句查询写法
- 代码编写注意_(IIF,SQL语句的WHERE条件写法)
- 有关SQL语句写法注意的那些事情(原创整理)
- 写Sql语句注意
- Sql语句优化注意
- sql 语句注意点
- 数据表如何加索引和一些sql写法注意项
- sql语句的多种写法
- 标准Sql语句的写法
- SQL循环语句 的写法
- 查询最大值SQL语句写法
- SQL语句写法总结一
- sql 语句 的一些写法
- Timer 定时器
- 通过定制SimpleCursorAdapter来实现ListView
- 22---数据库编程08(Clob)
- json转换为对象,对象转换为json flexjson的灵活运用
- 在Asp.net页面中调用颜色
- sql语句写法注意项
- spring-ws No adapter for endpoint ***: Is your endpoint annotated with @Endpoint?
- 第四周任务二:利用多文件组织项目
- 设置QLabel中字体的颜色
- c++中何时该用“引用传递”,何时该用“值传递”
- 在linux关机时执行某个脚本
- js 各种事件 、闭包
- 解答客户一个关于clob存储的疑问
- TileMode 枚举