如何写出高效sql
来源:互联网 发布:交互界面 数据驱动 编辑:程序博客网 时间:2024/06/05 10:11
1.PreparedStatement 一般来说比Statement性能高:一个sql 发给服务器去执行,涉及步骤:语法检查、语义分析, 编译,缓存。
2.有外键约束会影响插入和删除性能,如果程序能够保证数据的完整性,那在设计数据库时就去掉外键。
3.sql语句全部大写,特别是列名和表名都大写。特别是sql命令的缓存功能,更加需要统一大小写,sql语句发给oracle服务器语法检查和编译成为内部指令缓存和执行指令。根据缓存的特点,不要拼凑条件,而是用?和PreparedStatment
4. 可以看到,Union和Union All的区别之一在于对重复结果的处理。
UNION在进行表链接后会筛选掉重复的记录,而UNION ALL只是简单的将两个结果合并后就返回,返回的结果集就会包含重复的数据了。 从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用UNION ALL。
5.统一sql 的写法[大小写]
6.使用临时表暂存中间结果[避免程序中多次扫描主表,大大的减少了程序中共享锁阻塞更新锁,减少阻塞,提高了并发性能]
7. OLTP系统sql语句必须采用绑定变量
[Select*from order where time>@chgtime]
@chgtime变量可以传入任何值,这样大量的类似查询可以重用该执行计划了,这可以大大降低数据库解析SQL语句的负担。一次解析,多次重用,是提高数据库效率的原则。
8.绑定变量窥测
9.一些SQL查询语句应加上nolock
在SQL语句中加nolock是提高SQL Server并发性能的重要手段,在oracle中并不需要这样做,因为oracle的结构更为合理,有undo表空间保存“数据前影”,该数据如果在修改中还未commit,那么你读到的是它修改之前的副本,该副本放在undo表空间中。
(1) 查询的结果用于“插、删、改”的不能加nolock !
(2) 查询的表属于频繁发生页分裂的,慎用nolock !
(3) 使用临时表一样可以保存“数据前影”,起到类似oracle的undo表空间的功能,
能采用临时表提高并发性能的,不要用nolock 。
10.只在必要的情况下才使用begin tran
11.聚集索引没有建在表的顺序字段上,该表容易发生页分裂
12.使用like进行模糊查询时应注意
模糊查询必然走全表扫描
13.最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库.
应尽量避免在 where 子句中使用 != 或 <> 操作符
.应尽量避免在 where 子句中使用 or 来连接条件
- 如何写出高效sql
- 如何写出高效的SQL
- 如何写出高效SQL方法
- [SQL]如何写出高效的SQL
- 如何写出高效的SQL脚本《一》
- 如何写出高效的SQL脚本《一》
- 如何写出高效的SQL脚本
- 转载: 如何写出高效的SQL
- Oracle 如何写出高效的 SQL
- 如何写出高效的sql的一点想法
- 如何才可能写出高效的sql语句
- 理解sql原理,写出高效sql语句
- 如何写出高效的sql的一点想法及oracle常用hint用法
- 如何写出高效的SQL语句(从建表到查询一步一步往后说)
- 怎样写出精炼高效的sql语句
- 如何写出高效的PHP应用程序
- 如何写出高效的正则表达式
- 如何写出高效C++(资源管理)
- Android 自定义控件之画篮球
- Java的this关键字
- 设计模式---职责琏模式
- cloudsim资料收集
- Coderforces Word Capitalization
- 如何写出高效sql
- 路由器的路由表生成算法
- 什么是适合你的学习法-读后感
- phpStorm(2)——在phpStorm中为项目添加Composer支持
- cmd 下编译运行 C 文件
- 新木乃伊 The Mummy
- win7系统安装时提示找不到任何设备驱动程序的四种解决方法图文教程
- c#GroupBox控件添加右键菜单
- PHP的错误机制总结