当前位置: 首页 > 面试题库 >

最好在MySQL中调用很多字段时使用*?[重复]

卫弘义
2023-03-14
问题内容

这个问题已经在这里有了答案

为什么SELECT *被认为有害? (15个答案)

7年前关闭。

我知道一般来说,构建mysql查询来命名您需要的每个项目总是更好的性能,但是例如在配置文件页面上,我可能需要除几个项目之外的所有项目。

    SELECT user_name,f_name,l_name,country,usa_state,other_state,zip_code,city,gender,birth_date,date_created,date_last_visit, 
user_role,photo_url,user_status,friend_count,comment_count,forum_post_count,referral_count,referral_count_total, 
setting_public_profile,setting_online,profile_purpose,profile_height,profile_body_type,profile_ethnicity, profile_occupation,profile_marital_status,profile_sex_orientation,profile_home_town,profile_religion, 
profile_smoker,profile_drinker,profile_kids,profile_education,profile_income,profile_headline,profile_about_me, 
profile_like_to_meet,profile_interest,profile_music,profile_television,profile_books,profile_heroes,profile_here_for,profile_counter FROM users WHERE user_id=1 AND user_role >

因此,如果不进行大量测试,也许有更多经验的人可以提出一些建议?

这会更糟吗

SELECT * FROM users WHERE user_id=1 AND user_role >

我更喜欢列出所有项目,因为如果我需要数据库中的东西,那么在该页面上可以轻松查看我可以得到的东西,但是如果它更快,那么我就不会列出它们


问题答案:

注意: 当然,最好为所有字段命名,但是在本文中,我将仅讨论性能优势,而不是设计或维护优势。

由于*以下原因,语法可能会变慢:

  • 并非所有字段都被索引,并且查询使用全表扫描。可能不是您的情况:您返回的所有字段几乎都不可能用单个索引编制索引。

  • 从包含可变长度列的表中返回尾随字段可能会导致轻微的搜索开销:要返回20th字段,19应检查前一个字段并计算偏移量。

  • 仅需要返回更多数据(通过连接传递)。

由于您几乎需要所有字段,因此最后一个原因可能是最重要的一个。说,该description TEXT字段只能是页面上未使用150字段,但可以占据10其他所有字段在一起的时间。

在这种情况下,最好为所有字段命名,并省略不需要的长字段。



 类似资料:
  • 问题内容: 我对此有些困惑。我一直在阅读有关内容,并计划将其用于文本区域以防止XSS攻击。我了解通常用于生成发送到浏览器的HTML输出。但是我不确定的是: 1)在将数据插入MySQL之前,先对用户输入的数据进行使用是一种安全的做法吗?我已经在使用带有参数化值的PDO准备好的语句来防止SQL注入。 2)或者,我真的不需要担心要使用插入值(只要已对它们进行了参数化)而仅在我从MySQL获取结果并将其显

  • 问题内容: 我正在使用PuTTY运行: 有很多字段,这导致试图在终端中显示很多列。字段将换行到下一行,因此很难将字段名称与字段标题对齐。 在终端中查看此类数据有哪些解决方案? 我既没有也不想访问phpMyAdmin- 或任何其他GUI界面。我正在寻找这样的命令行解决方案:将MySQL查询结果保存到文本或CVS文件中 问题答案: 以代替 查询终止查询。例如: 此查询垂直显示行,如下所示:

  • 我使用的是advanced element form multi-select。当我使用multi-select插入表单的一个字段时,它可以完美地插入。 但是当我使用相同的表单更新多选择字段时,此时在选择输入标签中不会选择以前的插入值。它是在下拉列表中选择的,我也不能改变选择的字段。 我遵循这个选择2文件 笔记 ajax响应工作正常 cdn、css和javascript正确集成 我试过这些代码 J

  • 问题内容: 默认的jackon行为似乎同时使用属性(getter和setter)和字段来序列化和反序列化为json。 我想将这些字段用作序列化配置的规范来源,因此根本不希望杰克逊查看属性。 我可以使用注解在单个类的基础上执行此操作: 但是我不想在每堂课上都讲这个… 是否可以全局配置?喜欢添加一些到对象映射器? 问题答案: 你可以这样配置各个ObjectMappers: 如果要全局设置它,我通常通过

  • 问题内容: 默认的jackon行为似乎同时使用属性(getter和setter)和字段来序列化和反序列化为json。 我想将这些字段用作序列化配置的规范来源,因此根本不希望杰克逊查看属性。 我可以使用注解在单个类的基础上执行此操作: 但是我不想在每堂课上都讲这个… 是否可以全局配置?喜欢添加一些到对象映射器? 问题答案: 您可以像这样配置各个ObjectMappers: 如果要全局设置它,我通常通