主键、索引的困惑

Water Lee Water Lee 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
平时建表都会习惯性创建主键,但总会忘记索引。其实是对索引不确定。有几个小白问题请教,请各位指点
场景:开发超市收银系统,创建零售信息表,很自然会创建一个流水号作为主键以便于和其它表联接(例如零售明细表)。但是实际运用时,作为主键的流水号很少会在where中出现,反而是创建时间。例如查销量,统计某个商品销售情况,生成销售报表等。这时觉得如果在创建时间上创建一个过索引会不会要好一些,但查到的资料都提醒说,创建索引后查询会加快,但 Insert 会更加费时。
这样我就矛盾了,对于超市,收银时的 Insert 是很频繁的,但后台管理时,各种报表对销量的查询也是很频繁的。
各位帮忙分析一下要不要创建这个过引。

大概表结构
零售信息表
字段:零售ID(PK),创建时间,.....(其它信息)

零售明细表
字段:零售ID,商品条码,销售数量,......(其它信息)
...全文

相关推荐

MySQL索引之主键索引

在MySQL里,主键索引和辅助索引分别是什么意思,有什么区别? 上次的分享我们介绍了聚集索引和非聚集索引的区别,本次我们继续介绍主键索引和辅助索引的区别。 1、主键索引 主键索引,简称主键,原文是PRIMARY KEY,由一个或多个列组成,用于唯一性标识数据表中的某一条记录。一个表可以没有主键,但最多只能有一个主键,并且主键值不能包含NULL。 在MySQL中,InnoDB数据表的主键设计我们通常遵循几个原则: 1、采用一个没有业务用途的自增属性列作为主键; 2、主键字段值总是不更新,只有新增或者删除两种操作; 3、不选择会动态更新的类型,比如当前时间戳等。 这么做的好处有几点: 1、新增数据

weixin_38727199

MySQL的主键与唯一索引约束

总结,对于主键与唯一索引约束: • 执行insert和update时,会触发约束检查 • InnoDB违反约束时,会回滚对应SQL • MyISAM违反约束时,会中断对应的SQL,可能造成不符合预期的结果集 • 可以使用 insert … on duplicate key 来指定触发约束时的动作 • 通常使用 show warnings; 来查看与调试违反约束的ERROR

hyy80688

聚簇索引与主键的选择

聚簇索引与主键的选择一、什么是聚簇索引?二、什么是非聚簇索引?1. InnoDB引擎中2. MyISAM引擎中三、聚簇索引的优劣与主键选择的关系 一、什么是聚簇索引? 首先,聚簇索引不是一种单独的索引类型,其实是数据的存储方式。聚簇索引将数据存储与索引放在了一起,找到了索引也就找到了数据。 在MySql的InnoDB引擎中,表数据的文件是按照B+树组织的一个索引结构。而聚簇索引就是按照每张表的主键构造出来的B+树,叶子节点就是整张表的行数据,所以聚簇索引的叶子节点也被称为数据页。 二、什么是非聚簇索引? 1. InnoDB引擎中 主键索引就是一种聚簇索引,而其他创建出来的前缀索引、联合索引,唯

weixin_38742409

MySQL 主键与索引的联系与区别分析

主要介绍MySQL 主键与索引的联系与区别,使用mysql的朋友可以看下

weixin_38748718

简单例子理解主键,索引,聚集索引,复合索引,非聚合索引

测试数据以及表结构 一、 创建主键(主键=主键索引=聚集索引) 主键是什么? 答:拿主键可以唯一确定一条数据,它和物理存储排序一致,不能为空,一个表只能有一个。 原本没有创建的主键的表在磁盘上存储为: Id=0;username=username0;sex=男;address=浙江; Id=1;username=username1;sex=女;address=北京; Id=2;username=username2;sex=男;address=北京; 在创建主键之后变成了如下图树结构: 通过上图展示之后,大数据下不加主键查询速度为O(n),B-TREE查询速度为O(log n)。你想啊,不加

weixin_38704156
评论 27
收藏 已收藏
分享
返回顶部
Water Lee
C# 111,129 成员 642,538 内容