相关疑难解决方法(0)

为什么SELECT*被认为有害?

为什么SELECT *不好做法?如果添加了您想要的新列,是不是意味着要更改的代码更少?

我知道这SELECT COUNT(*)是一些DB上的性能问题,但是如果你真的想要每一列呢?

sql database

241
推荐指数
3
解决办法
7万
查看次数

MySQLi中的SELECT*FROM

我的网站相当广泛,我最近刚切换到PHP5(称我为大器晚成).

我之前的所有MySQL查询都是这样构建的:

"SELECT * FROM tablename WHERE field1 = 'value' && field2 = 'value2'";
Run Code Online (Sandbox Code Playgroud)

这使它非常简单,友好.

我出于明显的安全原因,现在正试图切换到mysqli,并且SELECT * FROMbind_param需要特定参数时,我很难弄清楚如何实现相同的查询.

这句话是否已成为过去?

如果是,如何处理涉及大量列的查询?我真的需要每次都输入它们吗?

php mysqli

23
推荐指数
3
解决办法
10万
查看次数

了解Dijkstra的莫扎特编程风格

我看到Edsger Dijsktra看到的关于编程风格的这篇文章.快速解释一下,主要的不同之处在于莫扎特,当编程的类比,在写任何东西之前完全理解(辩论)问题,而贝多芬在纸上写下笔记时作出了他的决定,并在此过程中创造了许多修改.使用Mozart编程,1.0版本将是软件的唯一版本,其目标应该是无错误和最高效率.此外,Dijkstra表示,不应该向那些提升和稳定性水平的软件发布.

基于他的观点,有两个问题.莫扎特的编程是否可行?如果我们采用莫扎特风格,我们今天写的软件真的会受益吗?

我的想法.看来,为了应对日益复杂的软件,我们已经从这种方法转向敏捷开发,公共beta测试和不断修订,定义Web开发的方法,速度最重要.但是,当我想到网络软件可以经历的所有修订时,尤其是在维护期间,当补丁通常应用于补丁时,然后通过繁琐的重构过程进行改进 - 莫扎特方式似乎非常有吸引力.它至少可以减少那些烦人的软件更新,例如Digsby,Windows,iTunes等,很多是无法预料的漏洞需要新的即时发布的结果.

编辑:有关Dijsktra视图的更准确说明,请参阅下面的响应.

coding-style dijkstra

21
推荐指数
6
解决办法
4172
查看次数

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

SQL查询 - 从视图中选择*或从视图中选择col1,col2,... colN

我们使用的是SQL Server 2005,但这个问题适用于任何RDBMS.

从视图中选择所有列时,以下哪项更有效?

Select * from view 
Run Code Online (Sandbox Code Playgroud)

要么

Select col1, col2, ..., colN from view
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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

在SELECT语句中组合两个字段

在我的表中,我有一个字段"firstname"和一个字段"lastname".我想选择firstname + space + lastname为某个值的所有记录.

我试过这个:

$sql = "SELECT * FROM sam_users WHERE (user_firstname + ' ' + user_lastname LIKE ?)";
Run Code Online (Sandbox Code Playgroud)

但这不起作用.有了Google,我发现了一些关于使用||的东西,但我真的不明白我应该如何使用该运算符.请注意,我不想使用or-operator(什么是||在多种语言中),而是要连接2个字段(它们之间有空格)并在其上使用LIKE.

谢谢!

mysql sql

10
推荐指数
1
解决办法
4万
查看次数

是"where(ParamID = @ParamID)OR(@ParamID = -1)"sql选择的一个好习惯

我曾经写过像sql一样的语句

select * from teacher where (TeacherID = @TeacherID) OR (@TeacherID = -1)
Run Code Online (Sandbox Code Playgroud)

阅读更多

并传递@TeacherID值= -1以选择所有教师

现在我担心你能告诉我的表现是一个好的练习还是坏的一个?

非常感谢

sql sql-server performance filter database-performance

10
推荐指数
2
解决办法
306
查看次数

返回的列数是否会影响查询的速度?

如果我有两个问题

SELECT Id, Forename, Surname
FROM Person
WHERE PersonName Like(‘%frank%’)
Run Code Online (Sandbox Code Playgroud)

SELECT *
FROM Person
WHERE PersonName Like(‘%frank%’)
Run Code Online (Sandbox Code Playgroud)

哪个查询运行得更快?where子句/表是加入最大因子还是返回的列数?

我问,因为我正在构建一系列映射到数据库表的对象.通常,每个对象至少具有以下三种方法:

Select - 选择一切

List - 选择足够的可用于填充下拉列表

Search - 选择结果中可查看的所有内容,通常约为6列.

如果每个查询返回完全相同的列集,则代码的维护和测试应该更加简单.在任何给定的表中,数据库不可能超过50,000行,因此如果性能差异很小,那么我将节省开发时间.如果表演会在场上摔倒,那么我将从不同角度进行表演.

那么,为了便于开发,是SELECT *明智的还是天真的?

sql performance

8
推荐指数
3
解决办法
1万
查看次数

6
推荐指数
4
解决办法
8218
查看次数

将文本添加到MySQL列的名称前面

假设一个查询,例如:

SELECT * FROM tableA;
Run Code Online (Sandbox Code Playgroud)

如何a_在每列的名称前加上?例如,如果存在列"用户名",则在结果中将其作为"a_username"进行访问.

编辑:SELECT username AS a_username格式不会帮助,因为我需要继续使用该*字段选择.与JOIN中另一个表的返回列存在JOIN和潜在冲突.我将迭代返回的列(foreach)并且只想将来自特定表(其模式可能更改)的列输出到HTML输入字段,其中站点管理员可以直接编辑字段的内容.有问题的SQL查询看起来像是SELECT firstTable.*, anotherTable.someField, anotherTable.someOtherField存在于firstTable中存在someField或someOtherField的可能性.

谢谢.

mysql

6
推荐指数
1
解决办法
4431
查看次数