相关疑难解决方法(0)

哪个更快/更好?SELECT*或SELECT column1,colum2,column3等

我听说SELECT *在编写SQL命令时使用通常是不好的做法,因为它对SELECT您特别需要的列更有效.

如果我需要SELECT表中的每一列,我应该使用

SELECT * FROM TABLE
Run Code Online (Sandbox Code Playgroud)

要么

SELECT column1, colum2, column3, etc. FROM TABLE
Run Code Online (Sandbox Code Playgroud)

在这种情况下,效率真的重要吗?SELECT *如果你确实需要所有的数据,我认为内部会更优化,但我说的是没有真正了解数据库.

我很想知道在这种情况下最佳做法是什么.

更新:我可能应该指定我真正想要做的唯一情况SELECT *是当我从一个表中选择数据时我知道所有列总是需要被检索,即使添加了新列.

鉴于我所看到的反应,这仍然是一个坏主意,SELECT *永远不应该用于更多技术原因,我曾经考虑过.

sql database

159
推荐指数
8
解决办法
6万
查看次数

Select*和Select [list each col]之间是否有区别

我正在使用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代表表格中的每一列?" 为清楚起见.

sql linq database linq-to-sql

25
推荐指数
6
解决办法
6649
查看次数

为什么这个SQL代码会给出错误1066(不唯一的表/别名:'user')?

这是我的表结构:

alt text http://img6.imageshack.us/img6/8730/articlek.jpg

错误消息是:

#1066 - 不是唯一的表/别名:'user'

以下是我的代码.

SELECT article.* , section.title, category.title, user.name, user.name
FROM article
INNER JOIN section ON article.section_id = section.id
INNER JOIN category ON article.category_id = category.id
INNER JOIN user ON article.author_id = user.id
LEFT JOIN user ON article.modified_by = user.id
WHERE article.id = '1'
Run Code Online (Sandbox Code Playgroud)

mysql sql join mysql-error-1066

16
推荐指数
3
解决办法
9万
查看次数

在SQL Server 2005中"select*from table"vs"select colA,colB,etc from table"

为一篇冗长的帖子道歉,但我需要发布一些代码来说明问题.

灵感来自问题*什么是不使用选择的原因?,我决定指出一些我之前注意到的select*行为的观察结果.

让我们的代码说明一切:

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[starTest]') AND type in (N'U'))
DROP TABLE [dbo].[starTest]
CREATE TABLE [dbo].[starTest](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [A] [varchar](50) NULL,
    [B] [varchar](50) NULL,
    [C] [varchar](50) NULL
) ON [PRIMARY]

GO

insert into dbo.starTest(a,b,c)
select 'a1','b1','c1'
union all select 'a2','b2','c2'
union all select 'a3','b3','c3'

go
IF  EXISTS (SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[vStartest]'))
DROP VIEW [dbo].[vStartest]
go
create view dbo.vStartest as
select * from dbo.starTest …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2005 views

14
推荐指数
1
解决办法
3056
查看次数