是否有任何RDBMS实现类似的东西SELECT * EXCEPT?我所追求的是获取除特定TEXT/BLOB字段之外的所有字段,我只想选择其他所有字段.
几乎每天我都会向我的同事抱怨有人应该实现这个......它非常烦人,它不存在.
编辑:我理解大家的关注SELECT *.我知道与之相关的风险SELECT *.但是,至少在我的情况下,这不会用于任何生产级代码,甚至是开发级代码; 严格用于调试,当我需要轻松查看所有值时.
正如我在一些评论中所说,我工作的地方严格来说是一个命令行商店,在ssh上做一切.这使得很难使用任何gui工具(不允许与数据库的外部连接)等.
谢谢你的建议.
我正在使用MS SQL Server 2005.与SQL引擎之间有区别
SELECT * FROM MyTable;
Run Code Online (Sandbox Code Playgroud)
和
SELECT ColA, ColB, ColC FROM MyTable;
Run Code Online (Sandbox Code Playgroud)
当ColA,ColB和ColC代表表格中的每一列时?
如果它们是相同的,那么为什么你应该使用第二个呢?我有一个对LINQ很重的项目,我不确定它生成的标准SELECT*是不是很糟糕,或者我应该总是使用.Select()来指定我想要的cols.
编辑:更改"当ColA,ColB和ColC是表格的所有列?" "当ColA,ColB和ColC代表表格中的每一列?" 为清楚起见.
为什么使用'*'构建视图不好?
假设您有一个复杂的连接,并且可以在某处使用所有字段.
然后你只需要选择所需的字段.
SELECT field1, field2 FROM aview WHERE ...
Run Code Online (Sandbox Code Playgroud)
视图"aview"可能是 SELECT table1.*, table2.* ... FROM table1 INNER JOIN table2 ...
如果table1和table2中的2个字段具有相同的名称,则会出现问题.
这只是为什么在视图中使用'*'不好的原因?
使用'*',您可以在不同的上下文中使用该视图,因为信息就在那里.
我错过了什么?
问候
SELECT
dealing_record.*
,shares.*
,transaction_type.*
FROM
shares
INNER JOIN shares ON shares.share_ID = dealing_record.share_id
INNER JOIN transaction_type ON transaction_type.transaction_type_id = dealing_record.transaction_type_id;
Run Code Online (Sandbox Code Playgroud)
上面的SQL代码产生了所需的输出,但有几个重复的列.此外,列标题显示不完整.当我改变了
linesize 100
Run Code Online (Sandbox Code Playgroud)
标题显示但数据显示重叠
我已经检查了类似的问题,但我似乎没有得到如何解决这个问题.
我一直在阅读这一点,我知道最好明确列出列名称,我仍然有一个问题。
让我们假设以下场景(非常接近我的现实生活场景):
永远不会添加新列
我没有使用任何 blob 数据
我实际上确实想返回所有列
我有一个大约有 1.4 亿行的表
我实际上并不需要全部 1.4 亿行,但为了便于讨论,我们假设我需要
我没有使用任何连接,其他人也不会
下面的查询实际上正是我运行查询的方式。
以下查询之间是否存在性能差异:
SELECT * FROM <table_name>
Run Code Online (Sandbox Code Playgroud)
VS
SELECT <every_column_name...> FROM <table_name>
Run Code Online (Sandbox Code Playgroud)
编辑:我知道关于这个主题有一百万个问题。但对于这种特定的场景,是否存在任何性能差异?是select *糟糕还是两个查询具有相同的性能?
据我所知,根据使用的结果explain,对于这种特殊情况,没有区别。
database postgresql select query-optimization postgresql-performance
可能重复:
哪个更快/最好?SELECT*或SELECT column1,colum2,column3等
不使用select*的原因是什么?
使用SELECT*而不是SELECT FiledName,FiledName2 ......是否存在性能问题?
我有一个关于 MySQL 性能的问题。在开始之前,抱歉我的英语不好。
问题是:星号和逗号分隔的字段名称之间的性能差异是什么。
例如:a 在“example_table”中有一个名为“example_table”的表,并有 5 个名为“f1、f2、f3、f4、f5”的字段。
select * from `example_table`;
Run Code Online (Sandbox Code Playgroud)
或者
select f1, f2, f3, f4, f5 from `example_table`;
Run Code Online (Sandbox Code Playgroud)
感谢您的回复。
我目前正在将用MySQL3和PHP4编写的应用程序移植到MySQL5和PHP5.
在分析中,我发现了几个使用"select*from tablename"的SQL查询,即使在PHP中只处理了一个列(字段).该表有近60列,并且有一个主键.在大多数情况下,唯一使用的列是id,它是主键.
如果我使用明确提到列名而不是*的查询,是否会提高性能?(在此应用程序中,只有一种方法,我们需要所有列,所有其他方法只返回列的子集)
这是不好的做法Select *吗?
我正在浏览一些旧代码并看到一些'SELECT*'语句.我以前的同事告诉我Select*是不好的做法,但我真的看不出原因(除非我当然只需要返回几个字段).但是对于完整的"详细检索"(通过Id类型查询获取)选择*似乎是正确的.
我听说这是一般编写查询的错误方法,但我想知道人们对SQL的新用户说些什么.
这是非常糟糕的形式还是只是懒惰?
因此,不要对此征求太多意见,除了不必输入每个字段名称之外,在查询中使用它有什么好的理由.另外,这些原因是否超过了它的使用危害?
sql ×7
database ×3
mysql ×2
performance ×2
linq ×1
linq-to-sql ×1
optimization ×1
php ×1
postgresql ×1
select ×1
sqlplus ×1
view ×1