distinct和group by,效率比较

在数据库中,DISTINCT 和 GROUP BY 都是用来过滤重复数据的,但它们的原理和用法是不同的。

DISTINCT 是通过比较每一行数据,仅返回不重复的数据,因此如果数据量较大,DISTINCT 的效率较低。

GROUP BY 是通过分组,将相同的数据分为一组,并对每一组数据进行计算,因此如果数据量较大,GROUP BY 的效率较高。

总的来说,GROUP BY 的效率要优于 DISTINCT,但是要根据具体情况和数据量来判断使用哪个方法。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
关系型数据库性能体系,设计和效率提升 1 1 前言 2 1.1目的 2 1.2预期的读者和阅读建议 2 2 数据库模型设计规范 2 2.1 数据库建模原则性规范 2 2.2 实体型之间关系认定规范 2 2.3 范式化1NF的规范 3 2.4 范式化2NF的规范 4 2.5 范式化3NF的规范 4 2.5 反范式化冗余字段使用规范 4 2.6 数据库对象命名基本规范 5 2.6.1遵循行业规范 5 2.6.2简单命名原则 5 2.6.3 字符范围原则 5 2.6.4字母全部大写或小写原则 6 2.6.5勿用保留词原则 6 2.6.5同义性原则 6 2.6.6富有含义原则 6 2.6.7 扩展性原则 6 3 表的设计规范 6 3.1 命名规范 6 3.1.1 表的命名规范 6 3.1.2 字段的命名规范 7 3.2 表的设计规范 7 3.2.1 指定表空间规范 7 3.2.2 表的主键规范 7 3.2.3 表的外键规范 8 3.2.4 字段类型及宽度的规范 8 3.2.5 一个表所含字段总长度的规范 8 3.2.6 一个表所含字段访问频繁度的规范 8 3.2.7 大对象字段(BLOB,CLOB)使用规范 9 3.2.8 关于字段能否为NULL值 9 3.2.9 关于冗余列的规范 9 3.2.10 使用注释的规范 9 3.2.11 一个表所含数据量的规范 10 3.2.12 增量同步表的设计规范 10 3.3 字段类型规范 10 3.3.1 不使用会发生隐式转换:INTEGER,FLOAT 10 3.3.2 不使用过时老类型:RAW,LONG,LONG RAW 10 3.3.3 国家字符集相关 10 3.3.4 不能使用大对象:BLOB,CLOB,NCLOB 11 3.3.5 不能使用高精度:TIMESTAMP 11 3.3.6 关于CHAR字段 11 4 分区表的设计规范 11 4.1 表空间及分区表的概念 11 4.1.1 表空间 11 4.1.2 分区表 11 4.2 表分区的具体作用 11 4.3 表分区的优缺点 12 4.4 分区表设计规范 12 4.2.1 不使用全局索引 12 4.2.2 RANGE分区的规范 12 4.2.3 LIST分区的规范 13 4.2.4 HASH分区的规范 13 4.2.5 RANGE-LIST分区的规范 14 4.2.6 RANGE-HASH分区的规范 14 5 索引的设计规范 15 5.1 索引分类 15 5.1.1单列索引与复合索引 15 5.1.2 唯一索引与非唯一索引 15 5.1.3 B树索引、位图索引与函数索引 15 5.2 命名规范 15 5.3 索引设计规范 15 5.3.1 指定表空间规范 16 5.3.2 主键索引的规范 16 5.3.3 唯一约束索引的规范 17 5.3.4 外键列索引的规范 17 5.3.5 复合索引的规范 17 5.3.6 函数索引的规范 17 5.3.7 位图索引的规范 18 5.3.8 反向索引的规范 18 5.3.9 分区索引的规范 18 5.3.10 索引重建的规范 18 6 其他数据库对象设计规范 18 6.1 命名规范 18 6.2 视图设计规范 19 6.2.1 尽量使用简单的视图,避免使用复杂的视图 19 6.2.2 按照必要性原则建立视图 19 6.3 存储过程、函数、触发器的设计规范 19 6.3.1 关于触发器的设计 19 7 SQL访问规范 20 7.1 尽量不要写复杂的SQL 20 7.2 避免使用SELECT * 20 7.3 INSERT时需写全列名 20 7.4 进行DML操作时使用CTAS进行数据备份 20 7.5 大数据量DML操作分多次执行 21 7.6 使用绑定变量,降低高硬解析 21 7.7 选择最有效率的表名顺序 21 7.8 关注WHERE子句中的连接顺序 21 7.9 用EXISTS替代IN 22 7.10 用表连接替换EXISTS 23 7.11用EXISTS替换DISTINCT 24 7.12 尽量用union all替换union 24 7.13 使用DECODE函数来减少处理时间 24 7.14 尽量避免用order by 25 7.15 用Where子句替换HAVING子句 25 7.16 减少多表关联 25 7.17 避免重复访问 26 7.17.1 使用group by 26 7.17.2 用表更新表 26 7.17.3竖向显示变横向显示 26 7.18 完成事务及时commit 27 7.19数据库连接及时关闭 27 7.20 索引的使用 27 7.20.1避免在索引列上使用函数或运算 27 7.20.2避免改变索引列的类型 28 7.20.3避免在索引列上使用NOT 28 7.20.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值