30

我最近在我的 MySQL 查询末尾省略了分号,我突然想到这可能会在服务器高负载、缓存等期间产生负面影响。有没有这样的影响?

4

1 回答 1

24

如果系统能够在没有分号的情况下判断语句的结尾,那么省略它们并没有什么坏处。如果系统变得混乱,这很重要。由于您已经能够将它们关闭,因此显然没有问题。很大程度上取决于您编写 SQL 的方式。如果您在 PHP 中编写单个语句,然后将它们发送到 MySQL 进行处理,则分号是可选的。

你问它是否“可能在服务器高负载、缓存等期间可能产生负面影响”。答案是“不”。如果它有效果,那就是对您的意思的基本解释,并且几乎不可避免地存在“它可以工作”和“它不能编译,更不用说运行”之间的区别。加载或缓存等效果完全独立于分号的存在与否。

这个答案相当普遍。有一个对 SQL Server 问题的引用,该问题表明 SQL Server 不需要分号,但在最近的版本中进行了更改,因此它们是必要的。它适用于大多数其他 DBMS。处理 SQL 脚本的 SQL 命令解释器需要知道 SQL 语句之间的界限,分号是表示它的标准方式,尽管还有其他约定(我相信有些使用go,有些使用斜杠/)。但从根本上说,它归结为“它是否有效”。如果是这样,则不需要分号。

于 2013-07-02T14:24:58.993 回答