首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    “禁止用 select * 作为查询字段列表”落地指南

    一、背景 《阿里巴巴 Java 开发手册》 MySQL 数据库部分,ORM 映射部分,谈到: 【强制】 在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。..."> SELECT email FROM user WHERE id = #{id} select> 正如手册上所说的,这种写法带来的好处是: 1)增加查询分析器解析成本。...---- 那么如果查询部分字段怎么办?是继续使用 UserDO 还是定义新的 DO 类?...【2】定义新的 DO 对象 >: 1)可以根据方法名和返回值,明确感知当前业务获取的字段 2)专用查询和通用查询很好地作区分 >: 当场景较多时,需要定义的 DO 对象过多...[1] 如果查询条件走索引,查询的字段里不含大字段,查询单个字段和查询多个字段的性能差异微乎其微几乎可以忽略不计。

    95610

    select * 和 select 所有字段的区别

    之前发过的文章中,关于 select * 和 select 所有字段的知识,有描述不恰当,这次重新纠正下,加深下理解。...多次查询(改变 limit 条件避免缓存),时间变化不大。 结论:两者差别几乎可忽略。所以查询所有字段(或者大多数字段)的时候,大可 select * 来操作。...如果某些不需要的字段数据量特别大,还是写清楚字段比较好,因为这样可以减少网络传输。 (1)减少数据的负担。...(2)考虑到今后的扩展性。 因为程序里面你需要使用到的列毕竟是确定的, SELECT * 只是减少了一句 SQL String 的长度,并不能减少其他地方的代码。...(3)索引问题 select abc from table; 和 select * from table; 在 abc 字段有索引的情况下,mysql 是可以不用读 data,直接使用 index

    2.2K40

    “禁止用 select * 作为查询字段列表”落地指南

    一、背景 《阿里巴巴 Java 开发手册》 MySQL 数据库部分,ORM 映射部分,谈到: 【强制】 在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。...SELECT email FROM user WHERE id = #{id} select> 正如手册上所说的,这种写法带来的好处是: 1)增加查询分析器解析成本。...那么如果查询部分字段怎么办?是继续使用 UserDO 还是定义新的 DO 类?...【2】定义新的 DO 对象 >: 1)可以根据方法名和返回值,明确感知当前业务获取的字段 2)专用查询和通用查询很好地作区分 >: 当场景较多时,需要定义的 DO 对象过多...[1] 如果查询条件走索引,查询的字段里不含大字段,查询单个字段和查询多个字段的性能差异微乎其微几乎可以忽略不计。

    1K20

    select * 和 select 所有字段的区别

    之前发过的文章中,关于 select * 和 select 所有字段的知识,有描述不恰当,这次重新纠正下,加深下理解。...多次查询(改变 limit 条件避免缓存),时间变化不大。 结论:两者差别几乎可忽略。所以查询所有字段(或者大多数字段)的时候,大可 select * 来操作。...如果某些不需要的字段数据量特别大,还是写清楚字段比较好,因为这样可以减少网络传输。 (1)减少数据的负担。...(2)考虑到今后的扩展性。 因为程序里面你需要使用到的列毕竟是确定的, SELECT * 只是减少了一句 SQL String 的长度,并不能减少其他地方的代码。...(3)索引问题 select abc from table; 和 select * from table; 在 abc 字段有索引的情况下,mysql 是可以不用读 data,直接使用 index 里面的值就返回结果的

    3K20

    mysql中select子查(select中的select子查询)询探索

    这个子查询使用了dept表,通过员工表和部门表的deptno字段关联,查询出员工所在部门的名称。由于是子查询,所以需要在执行每一个子查询的时候都扫描一遍dept表,效率相对较低。 3....实际上,第一条SQL语句的执行顺序是这样的: 执行子查询,查询出员工所在的部门名称。这个子查询使用了dept表,通过员工表和部门表的deptno字段关联,查询出员工所在部门的名称。...执行主查询,查询员工姓名和部门名称。这个查询使用了emp表,通过员工表的empno字段和where条件过滤,查询出员工姓名和部门名称。...到这里对于select子查询的执行顺序更迷惑了,不知道DEPENDENT SUBQUERY到底时怎么执行的,到底有没有生产临时表,但是可以明确这种子查询的效率不如join好 注意事项 在select子查询中...于是就有了select子查询探索之旅,后续继续在完善select子查询的执行流程,也不知道是我误导了ChatGPT还是他迷糊了我,总觉得他是墙头草,说的不靠谱

    11100

    Django的ORM字段类型-2

    模型类-字段选项 字段选项:指定创建的列的额外信息 允许出现多个字段选项,多个选项之间使用,隔开 primary key 如果设置为True,表示该列为主键,如果指定一个字段为主键,则此数据库不会创建...Id字段 blank 设置为True的时候,字段可以为空。...设置为False的时候字段是必须填写的 null 如果设置为True则表示该列允许为空....默认的情况下为False,如果不为空的话需要设置default来设置默认值 default 设置所在列的默认值,如果字段选项null=False的话建议添加此选项 db_index 如果设置为True表示为该列增加索引...unique 如果设置为True表示该字段在数据库中的值必须是唯一的(不能重复出现) db_column 指定列名称,如果不指定的话则采用属性名作为列名 verbose_name 设置此字段在admin

    66130

    Django之model查select的用法

    ,将每条数据的结果以字符串的形式存储在列表中,从而避免解析元组的麻烦 User.objects.values_list('username', flat=True) # int字段取最大值、最小值、综合...=select).values('day').annotate(number=Count('id')) Q 的使用 Q对象可以对关键字参数进行封装,从而更好的应用多个查询,可以组合&(and)、|(or...: # 查询用户的角色名 _t = User.objects.get(username='运维咖啡吧') _t.role.name 反向查询: # 查询角色下包含的所有用户 _t = Role.objects.get...User.objects.filter(role=_t) 第三种反向查询的方法: 如果外键字段有related_name属性,例如models如下: class User(models.Model):...方法,如果查询的对象不存在的话,则抛出一个Http404的异常 实现方法类似于下边这样: from django.http import Http404 try: _t = User.objects.get

    75940

    Django model select的各种用法详解

    《Django model update的各种用法介绍》文章介绍了Django model的各种update操作,这篇文章就是她的姊妹篇,详细介绍Django model select的用法,配以对应...MySQL的查询语句,理解起来更轻松。...,将每条数据的结果以字符串的形式存储在列表中,从而避免解析元组的麻烦 User.objects.values_list('username', flat=True) # int字段取最大值、最小值、综合...User.objects.filter(role=_t) 第三种反向查询的方法: 如果外键字段有related_name属性,例如models如下: class User(models.Model):...方法,如果查询的对象不存在的话,则抛出一个Http404的异常 实现方法类似于下边这样: from django.http import Http404 try: _t = User.objects.get

    1.1K30

    SELECT 语句中的 子查询(Sub Query)

    SELECT 语句中的子查询 子查询(Sub Query)或者说内查询(Inner Query),也可以称作嵌套查询(Nested Query),是一种嵌套在其他 SQL 查询的 WHERE 子句中的查询...使用子查询必须遵循以下几个规则: 子查询必须括在圆括号中。 子查询的 SELECT 子句中只能有一个列,除非主查询中有多个列,用于与子查询选中的列相比较。...SELECT 列表中不能包含任何对 BLOB、ARRAY、CLOB 或者 NCLOB 类型值的引用。 子查询不能直接用在集合函数中。...WHERE ID IN (SELECT ID FROM CUSTOMERS) ; UPDATE 语句中的子查询: 子查询可以用在 UPDATE 语句中。...下面的示例将 CUSTOMERS 表中所有 AGE 大于或者等于 27 的客户的 SALARY 字段都变为了原来的 0.25 倍: SQL> UPDATE CUSTOMERS SET SALARY =

    3.2K20
    领券