我一直在阅读这篇文章,我知道明确列出列名称会更好,我还有一个问题。
让我们假设以下场景(非常接近我的现实生活场景):
永远不会添加新列
我没有使用任何blob数据
以下查询之间是否存在性能差异:
select *
from table
VS
select every_column_name
from table
编辑:据我所知,这个话题有一百万个问题。但对于这个特别的情景,是否存在任何性能差异? select *
仍然不好或两个查询都有相同的效果吗?
据我所知,根据使用explain
的结果,对于这种特殊情况没有区别。
答案 0 :(得分:2)
这是对我的评论的详细说明。
使用select *
进行即席查询绝对没有坏处。这是一个很大的方便和共同。
当您想要随时间运行相同的查询时出现问题。特别是,如果编译了查询,则对基础表的更改可能会导致意外问题。我喜欢"当基础表中的列类型发生变化时,在视图中调用select *
引起的问题(从早上6点开始)调用大约10个小时。代码未重新编译,数据记录中的偏移量已关闭。
即使这种情况也可以通过强制重新编译来解决。而且,我通常在即席查询中使用SELECT *
。
您的问题总结了一些关键点,例如宽列减慢了查询速度。
答案 1 :(得分:0)
它们之间没有任何性能差异。当DBMS分析这两个语句时,它会生成相同的查询。也就是说,*是every_column_name的快捷方式。