我在谷歌上搜索了这个问题,似乎找不到一致的观点,也找不到许多基于可靠数据的观点。我只是想知道在SQL SELECT语句中使用通配符是否比单独调用每一项产生额外的开销。我在几个不同的测试查询中比较了两者的执行计划,看起来估计总是相同的。是否有可能在其他地方产生一些开销,或者它们是否真的以相同的方式处理?
我具体指的是:
SELECT *与
SELECT item1, item2, etc.发布于 2009-12-09 00:18:28
SELECT * FROM...和
SELECT every, column, list, ... FROM...将执行相同的操作,因为两者都是未优化的扫描
区别在于:
当表模式changes
索引或模式绑定视图,则
关于同一主题的其他SO问题...
发布于 2009-12-09 00:18:18
你是说用select col1, col2, col3 from ...代替select * from ...吗?
我认为命名列并检索最少量的信息总是更好的方法,因为
*,就会受到影响。在数据库迁移等情况下,这可能是危险的。如果你用“通配符”指的是其他东西,那就忽略我的回答...
发布于 2009-12-09 00:16:47
编辑:如果你谈论的是星号通配符,就像在Select * From ...中一样,那么可以看看其他回复……
如果您正在讨论谓词子句中的通配符,或者使用Like运算符、(_ , % )的其他查询表达式,如下所述:
这与使用通配符是否会影响SQL是否可"SARG-ABLE“有关。SARGABLE,( search -ARGument-able)表示查询的搜索或排序参数是否可以用作现有索引的条目参数。如果在参数的开头加上通配符
Where Name Like '%ing'那么就没有办法遍历name字段上的索引来找到在‘’中以ing结尾的节点。
如果您将通配符附加到末尾,
Where Name like 'Donald%' 然后,优化器仍然可以在name列上使用索引,并且查询仍然是SARG-able的
https://stackoverflow.com/questions/1867946
复制相似问题