Oracle 常用语句开发优化问题

最近在网上下载 这种规范 有几条觉得不行 不知道大家如何看? <> 操作符(不等于)  不等于操作符是永远不会用到索引的,因此对它的处理只会产生全表扫描。  推荐方案:用其它相同功能的操作运算代替,如  a<>0 改为 a>0 or a<0  a<>’’ 改为 a>’’  IS NULL 或IS NOT NULL操作(判断字段是否为空)  判断字段是否为空一般是不会应用索引的,因为B树索引是不索引空值的。  推荐方案:  用其它相同功能的操作运算代替,如  a is not null 改为 a>0 或a>’’等。  不允许字段为空,而用一个缺省值代替空值,如业扩申请中状态字段不允许为空,缺省为申请。这两条 看了看不起作用12. 尽量多使用COMMIT只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少:COMMIT所释放的资源:a. 回滚段上用于恢复数据的信息.b. 被程序语句获得的锁c. redo log buffer 中的空间d. ORACLE为管理上述3种资源中的内部花费(译者按: 在使用COMMIT时必须要注意到事务的完整性,现实中效率和事务完整性往往是鱼和熊掌不可得兼)在Tom最近出的Oracle编程与艺术 上说Oracle 与Sql Server 不一样Commit 尽量少用 在事务结束时才Commit下
最新回答
局外亾

2026-10-30 15:19:07

1、<>是可以使用索引的
2、是否使用索引需要判断全表和索引的开销,全表并不是一定不要,索引也不是一定就好。
3、使用极限值代替NULL,是错误的。极限值将引起执行计划不稳,例如区间操作将使用HIGH VALUE和LOW VALUE。
4、NULL也是可以使用索引的,如果一个复合索引包含了1个非空列和可空列,则可对NULL操作使用索引。
5、COMMIT的开销非常小,因此不是说尽量多COMMIT,而是应该从事务的完整性出发考虑。如果考虑到锁,则应从应用程序的架构和代码的效率上着手。而不是一味去COMMIT。任何事务性语句都不应该出现在过程中,事务语句应该交由顶层调用环境处理,对于DDL这类语句则应封窗到JOB中使之成为事务的一部分,如何开发高效的PL/SQL代码不是简单的COMMIT就解决了的。
萌城少女

2026-02-21 09:14:53

楼下回答明显没有回答到点上。。 如果程序连接过来如何连接到表空间?况且碰到分区表你如何处理?
尽管我不是很了解SQLERVER,但是如果楼主有两个网站都比较大 建议创建两个实例,每个网站通过JDBC指向不同的数据库,这样两个库是完全分离的没有任何影响
如果考虑到正版费用太贵或者设备问题。可以建立楼主创建两套独立的用户,及在一个实例中建立两组用用,两个网站访问均是访问同一个实例,只不过访问的用户不同。这样也可以解决楼主的问题!
若樱落如烟

2026-07-18 02:30:18

1、不等于用不了索引是不正确的,如果真是这样的话,那数据库的查询优化功能也太弱了。实际上数据库会自动将<>转换成> or <的,看看执行计划就清楚了;
2、一次commit是一次与数据库服务器的交互,太多的话当然影响性能的。