相当多的数据库脚本具有以下形式:
IF NOT EXISTS(SELECT * FROM Countries WHERE Name = 'France')
INSERT INTO(Countries)
但是,我也看到人们这样做:
IF NOT EXISTS(SELECT CountryID FROM Countries WHERE Name = 'France')
INSERT INTO(Countries)
乃至:
IF NOT EXISTS(SELECT 1 FROM Countries WHERE Name = 'France')
INSERT INTO(Countries)
据说最后一个的优点是效率更高:查询实际上不使用子查询中的任何列,因此不带回任何列可能会更快。但它看起来很奇怪,所以我觉得它可能会让一些人感到困惑。它对实际执行时间有什么影响吗?