我最近在我的 MySQL 查询末尾省略了分号,我突然想到这可能会在服务器高负载、缓存等期间产生负面影响。有没有这样的影响?
问问题
13635 次
1 回答
24
如果系统能够在没有分号的情况下判断语句的结尾,那么省略它们并没有什么坏处。如果系统变得混乱,这很重要。由于您已经能够将它们关闭,因此显然没有问题。很大程度上取决于您编写 SQL 的方式。如果您在 PHP 中编写单个语句,然后将它们发送到 MySQL 进行处理,则分号是可选的。
你问它是否“可能在服务器高负载、缓存等期间可能产生负面影响”。答案是“不”。如果它有效果,那就是对您的意思的基本解释,并且几乎不可避免地存在“它可以工作”和“它不能编译,更不用说运行”之间的区别。加载或缓存等效果完全独立于分号的存在与否。
这个答案相当普遍。有一个对 SQL Server 问题的引用,该问题表明 SQL Server 不需要分号,但在最近的版本中进行了更改,因此它们是必要的。它适用于大多数其他 DBMS。处理 SQL 脚本的 SQL 命令解释器需要知道 SQL 语句之间的界限,分号是表示它的标准方式,尽管还有其他约定(我相信有些使用go
,有些使用斜杠/
)。但从根本上说,它归结为“它是否有效”。如果是这样,则不需要分号。
于 2013-07-02T14:24:58.993 回答