相关疑难解决方法(0)

不使用select*的原因是什么?

我见过很多人声称你应该在选择查询中专门命名你想要的每一列.

假设我要使用所有列,为什么我不使用SELECT *

即使考虑问题*SQL查询 - 从视图中选择*或从视图*选择col1,col2,... colN,我不认为这是完全重复的,因为我从一个略微不同的角度来看待问题.

我们的原则之一是不要在它之前进行优化.考虑到这一点,似乎使用SELECT *应该是首选方法,直到它被证明是一个资源问题或模式几乎是一成不变的.据我们所知,在开发完成之前不会发生这种情况.

那就是说,不使用是否有一个压倒一切的问题SELECT *

sql

135
推荐指数
6
解决办法
2万
查看次数

在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
查看次数

表中的列数是否会影响没有索引的表上的count(*)查询的性能?

我正在创建基准表来测量我们的Netezza盒子上的每小时负载(查询延迟,查询持续时间).我对表中想要的行数有了一个很好的了解,我正在尝试确定列的数量.没有索引; 我将运行全表扫描.

我正在尝试确定基准表中需要多少列,并且有以下问题:列数(及其类型)将如何影响计数(*)查询的性能.我最初的想法是,具有更多列的表将分布在更多磁盘块上.因此,系统将不得不进行更多磁盘搜索,从而导致更长的查询.

当我在Netezza工作时,我也欢迎与其他系统相关的答案(MySql,Postgres,Vertica等)以帮助我理解.

关于列数对查询性能的影响,已经有几个讨论(Q1,Q2,Q3).这些问题讨论的是通用查询,而不是没有索引的全表扫描.因此,单独的问题.

mysql database postgresql performance

2
推荐指数
1
解决办法
3456
查看次数