在Oracle SQL语句中使用分号

Kev*_*ock 3 sql oracle performance

免责声明:我刚开始研究新合同,这迫使我从MSSQL切换到Oracle.所以我是Oracle的全新人,可能会给我带来许多糟糕的MSSQL实践.好的,关于这个问题......

根据这个帖子的答案,分号是坏的,应该避免.我花了好几个小时试图弄清楚为什么我的查询在SQL Developer中运行得非常慢,我意识到了这一点.从复杂查询结束时删除分号后,它在几秒钟内完成(与我在几分钟后放弃它相比,在删除分号之前就是这种情况).这种行为让我吃了一惊,谷歌搜索没有多少关于我应该或不应该在我的SQL语句中使用分号的时间和原因.任何人都可以通过简短的解释清楚这一点吗?

如果您有可用于从MSSQL迁移到Oracle的穷人开发人员的在线资源的链接,那么我将非常感激!

谢谢!

And*_*ter 15

这不是分号.重新运行相同的查询意味着行已经缓存,因此您可以更快地恢复它们.

  • 分号是一个语句分隔符.在SQL*Plus中,如果你确实更新了table_a,则设置col_1 = 2; /当遇到分号时,update语句会自动执行.然后斜杠将在缓冲区中运行当前语句(即重新运行刚刚执行的语句); 如果没有斜杠,并且SQL语句用空行分隔,那么语句将永远不会被执行并被简单地丢弃.虽然这会很快:)不同的客户端有不同的执行语句的方式.SQL Developer的ctrl-return不应该关心SQL末尾的sem-colon (3认同)

Irf*_*lic 5

我拥有 5 年以上的 MS SQL 经验和 4 年以上的 Oracle 开发经验。我知道您会讨厌很多 Oracle 功能,尤其是 SQL 中的功能,;) 但别着急。Oracle 是一个非常强大的数据库管理系统。尽管从很多角度来看我更喜欢 MSSQL 而不是 Oracle,但这是一个不同的话题。

至于你的问题:

分号只是一个语句分隔符。

SQL 开发人员正在使用 Java 和 OCI,因此您可能会遇到不同的问题(我只是猜测可能出了问题)。

如果您觉得某些东西运行不正常,我建议您获取该查询并在 SQLPLUS(而不是可视化查询工具)中运行它,因为它会给您正确的感觉。

祝 Oracle 开发顺利。

访问SQL*Plus 常见问题解答