我是一个非常新的PHP开发人员,但对T-SQL有一些很好的经验,所以我能够为我构建一些不错的SQL查询。我正在构建一个PHP应用程序,并在很多场合遇到过这个问题。
当我遇到需要从MySQL数据库中提取数据并通过PHP处理输出的问题时,我应该简单地“*”输出整个结果集并通过PHP选择我需要的内容吗? IMO在SQL中尽可能多地工作更有意义,但我不知道。
在表现和“最佳实践”方面,一般情况下最佳;依靠MySQL来完成大部分工作并让PHP获取输出或让PHP完成大部分工作?
答案 0 :(得分:1)
您通常不应该使用通配符来抓取所有列。最好只检索您感兴趣的列。这对以下方面有影响:
答案 1 :(得分:0)
如果您只需要表中的所有列,请明确指定所需的列。这在性能方面更好,更不用说它更具可读性了。
答案 2 :(得分:0)
SQL几乎总能产生比PHP更好的性能,但它实际上取决于正在运行的查询。它越复杂,SQL就越有可能成为更好的答案。 SQL是围绕“快速获取正确的数据”而构建的,而PHP是围绕作为通用脚本语言而构建的。
答案 3 :(得分:0)
通常,最佳做法是返回特定列。性能不是一个大问题,除非你正在处理包含BLOB的表(也考虑表可能将来有一个),但你可能会发现处理较小的返回对象更容易
当然,如果您处于开发模式而不是维护模式,那么如果您经常添加或删除列,则可能会发现SELECT *。
答案 4 :(得分:0)
根据我的经验,收集*查询或特定字段查询的访问时间与所有请求时间相比相形见绌,至少如果这是通过网络完成的话。
IE在我对美国和海外托管网站的测试中我通常看到,除非你有大表行和大量行,否则select fld,fld,fld和select *之间的区别可以忽略不计。
我个人认为这是基于系统大小,表格以及表格和列是否处于任何变化状态的判断调用。如果我是你,不知道系统的大小我会选择*但显然它不是“最佳实践”,但我认为它确实需要在特定的系统基础上。
我目前是一个巨大的C#,WCF,WPF,SQL项目团队的成员,他们选择“最佳实践”的所有地方,我们所拥有的是一个巨大的混乱。在某些情况下,花费了大量精力来遵循最佳实践,结果是维护它的工作要多得多。我们有bazillions以及包装器,适配器,统一等接口。现在做一个小改动它触及15-20个文件。我意识到这有点偏离主题,但不要盲目地遵循最佳实践,因为它在那里。