首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我的两个表建立数据关系有问题?

小勤:大海,为什么我这两个简单的表建立数据关系有问题啊? 大海:啊?出什么问题了?...小勤:你看,我先将表添加到数据模型,这是订单明细表的: 用同样的方法将产品表也添加到数据模型,然后创建表间关系,结果出错了! 大海:你的产品表里的产品名称重复了。 小勤:啊?...我看看: 小勤:真的嘢!里面有两个小米,一个是宏仁生产的,一个是德昌生产的。但是,产品名称重复不行吗? 大海:当然不行啊,你产品名称是重复的,我怎么知道订单明细表里的产品应该对应你产品表里哪一个啊?...小勤:啊,知道了,看来我还是得把订单明细表里的产品ID放出来,不然做出来的数据分析都是不对的。 大海:很棒,这么快就想到产品ID的问题了。...小勤:你上次《表间关系一线牵,何须匹配重复拼数据》的文章里不是有提醒吗?只是我没想到我的数据那么快就存在这种情况。 大海:呵呵,名称重复的情况太正常了,所以尽可能都用ID编码。

1.2K20

为什么我建议需要定期重建数据量大但是性能关键的表

如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~ 本文是“为什么我建议”系列第三篇,本系列中会针对一些在高并发场景下,我对于组内后台开发的一些开发建议以及开发规范的要求进行说明和分析解读...往期回顾: 为什么我建议在复杂但是性能关键的表上所有查询都加上 force index 为什么我建议线上高并发量的日志输出的时候不能带有代码位置 一般现在对于业务要查询的数据量以及要保持的并发量高于一定配置的单实例...BY id DESC LIMIT 20 这个表的分片键就是 user_id 一方面,正如我在“为什么我建议在复杂但是性能关键的表上所有查询都加上 force index”中说的,数据量可能有些超出我们的预期...目前大部分业务表都用的 InnoDB 引擎,并且都用的默认的行格式 Dynamic,在这种行格式下我们在插入一条数据的时候,其结构大概如下所示: 记录头中,有删除标记: 当发生导致记录长度变化的更新时...但是相对的,如果 Delete 就相当于完全浪费了存储空间了。 一般情况下这种不会造成太大的性能损耗,因为删除一般是删的老的数据,更新一般集中在最近的数据。

88330
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    为什么我建议在复杂但是性能关键的表上所有查询都加上 force index

    但是不能直观的看出来为啥会走错索引,需要通过 OPTIMIZER TRACE 进行进一步定位。但是在进一步定位之前,我想先说一下 MySQL 的 InnoDB 查询优化器数据配置。...这也引出了一个新的可能大家也会遇到的问题,我在原有索引的基础上,加了一个复合索引(举个例子就是原来只有 idx_user_id,后来加了 idx_user_status_pay),那么原来的只按照 user_id...并且统计数据不是全量统计,是抽样统计。所以在表的数据量很大的时候,这个统计数据很难非常准确。...顺便说一下:MySQL 表数据量不能很大,需要做好水平拆分,同时字段不能太多,所以需要做好垂直拆分。...结论和建议 综上所述,我建议线上对于数据量比较大的表,最好能提前通过分库分表控制每个表的数据量,但是业务增长与产品需求都是不断在迭代并且变复杂的。很难保证不会出现大并且索引比较复杂的表。

    1.4K20

    为什么会有“建议MySQL单表数据控制在2000W”的说法?

    前言经常听到“建议MySQL单表数据控制在2000W”这样的说法,这个说法的背后是因为表数据量过大会导致查询性能低下。那么2000W是怎么来的?行记录是如何存储的?...为了提高查询效率,InnoDB以索引组织表数据,且每张表至少会有一个索引(聚簇/主键索引)。所以,在组织表数据时会存在索引页和数据页。...图中的「用户数据」可以存放多少行记录是至关重要的,因为它关系到“单表数据控制在2000W”的这个说法是否成立。那么,索引页和数据页可以存放多少行记录?数据页可以存放多少行记录?...因为树高度过高时,会有以下两个原因导致查询速度变慢:树高度过高,意味着在进行数据检索时需要进行更多的磁盘I/O操作。在这样大的数据量下,索引的体积也会很大,维护索引结构的复杂度也会相应提高。...总结综上所述,“建议MySQL单表数据控制在2000W”是根据每行记录大小为1KB估算的,并非一个标准,还是要根据实际情况去决定单表的数据量。

    16710

    arcengine+c# 修改存储在文件地理数据库中的ITable类型的表格中的某一列数据,逐行修改。更新属性表、修改属性表某列的值。

    作为一只菜鸟,研究了一个上午+一个下午,才把属性表的更新修改搞了出来,记录一下: 我的需求是: 已经在文件地理数据库中存放了一个ITable类型的表(不是要素类FeatureClass),注意不是要素类...FeatureClass的属性表,而是单独的一个ITable类型的表格,现在要读取其中的某一列,并统一修改这一列的值。...表在ArcCatalog中打开目录如下图所示: ? ?...= ""; //利用ICursor进行数据更新修改 ICursor updateCursor = pTable.Update(queryFilter,...网上有的代码是用的ID来索引,但是表格的ID可能并不是从0开始,也不一定是按照顺序依次增加。

    9.6K30

    讲讲 group by 的实现原理

    通过上图我们可以看出 group by 会对所有的数据先根据 cat 字段进行分组,然后针对分组后的数据在组内进行聚合运算(计数、求和、求均值等),最后再将聚合后的每组数据进行汇总就得到了我们想要的结果...在上图中大家应该看到了分组模块只有 cat 这一列是标红加粗,sale_date 和 sales 这两列是比较虚的字体,为什么会这样呢?难道我写错了?其实不然,是我故意的。为什么要故意呢?...我们看一下下面这张图: 上图是将表 t 在 Excel 中做一个数据透视表,如果我们只将 cat 这一列拖到行区域的时候,在表中只显示出了 cat 这一列,别的列是没有显示出来的,Sql 中也是一样的道理...上面的是最简单的一个例子,就是只按照 cat 这一列进行分组,如果我们现在想要同时对 cat 和 sale_date 这两列来进行分组的话该怎么实现呢?...通过上面的两个例子,我们也看到了,虽然一个数据表会有多列,但是在 group by 的时候,只会显示出来你 group by 的列,而其他列是不显示出来的,没有显示出来的列,你在 select 的时候肯定是查询不到的

    2.2K10

    Safety Data Sheet安全数据表SDS是什么意思,危险品在高温下储存的注意事项

    图片一、Safety Data Sheet安全数据表SDS是什么意思SDS(Safety Data Sheet,安全数据表)是危险化学品生产或销售企业按法规要求向客户提供的一份关于化学品组分信息、理化参数...在欧洲国家,物质安全数据表/化学品安全技术说明书MSDS也被称为安全技术说明书/安全数据表SDS(Safety Data sheet)。...二、Safety Data Sheet安全数据表SDS,危险品在高温下储存的注意事项新闻:据江西省九江市湖口县委员会官方微博“九江湖口发布”消息,7月17日晚21时左右,湖口武垦场一企业仓库存放的酒精等起火...Safety Data Sheet安全数据表SDS,危险品在高温下储存的注意事项:在安全数据表SDS的第7小节做出以下指导:本节提供可最大限度地减小物质或混合物对人、财产和环境的潜在危险的安全搬运做法指南...(d) 其他建议,包括:(一)通风要求;(二) 储存空间/容器的具体设计;(三) 在储存条件下的数量限制(如果相关);(四) 包装的相容性。

    73750

    收藏 | VLOOKUP函数的这些妙用你都知道吗?

    这里我有一张表,当中包含了部门、姓名、学历、工资。这也是我们日常工作中经常会遇到的一张表。 这里我们在已知姓名的情况下,我想要得到某人的工资是多少,我们就要来看看用vlookup是怎么来写的。...这里表中包含了销售员的销售额数据,张三、李四、王五…这一个个排下去的销售额各有不同,我要来算他们的销售提成是多少。 大家注意看这一列就是我用VLOOKUP近似匹配出来的。 近似匹配的方法是什么?...加完之后我往下去拖公式的时候,它就始终在红色区域不会去动了,这个是值得大家注意的一点。 同时我要返回的比例是第二列的,因为第一列是用销售额去减,是用销售额去里面去做比较的。...我在知道姓名的情况下,想要找到他的部门是什么。 很多同学说,你为什么不就把这个部门移到姓名后面呢? 这都是理想情况,有时候我们不是希望自己去改表的,我只是在过程中临时的用一下,这个时候我们该怎么做?...首先我要查找的姓名是在第一列,然后我要返回的第二列的值正好就是部门。我现在就把这个函数学清楚就好了。 它用的就是if函数。大写的IF,首先填进去的参数是一个大括号加0逗号1,它代表什么?

    1.4K10

    java架构之路(三)Mysql之Explain使用详解

    type列: 这一列表示关联类型或访问类型,即MySQL决定如何查找表中的行,查找数据行记录的大概 范围。...explain 时可能出现 possible_keys 有列,而 key 显示 NULL 的情况,这种情况是因为表中 数据不多,mysql认为索引对此查询帮助不大,选择了全表查询。...key列: 这一列显示mysql实际采用哪个索引来优化对该表的访问。 如果没有使用索引,则该列是 NULL。...key_len列: 这一列显示了mysql在索引里使用的字节数,通过这个值可以算出具体使用了索引中的哪些列。...ref列: 这一列显示了在key列记录的索引中,表查找值所用到的列或常量,常见的有:const rows列: 这一列是mysql估计要读取并检测的行数,注意这个不是结果集里的行数。只是一个预估值。

    81720

    面试前必须知道的MySQL命令【expalin】

    以下为常见的取值 ALL:全表扫描,这个类型是性能最差的查询之一。通常来说,我们的查询不应该出现 ALL 类型,因为这样的查询,在数据量最大的情况下,对数据库的性能是巨大的灾难。...如果在 Extra 列看到 Using index,说明正在使用覆盖索引,只扫描索引的数据,它比按索引次序全表扫描的开销要少很多。...NULL:在执行阶段不需要访问表。 1.3.5possible_keys 这一列显示查询可能使用哪些索引来查找 1.3.6key 这一列显示MySQL实际决定使用的索引。...1.3.7key_len 这一列显示了在索引里使用的字节数,当key列的值为 NULL 时,则该列也是 NULL 1.3.8ref 这一列显示了哪些字段或者常量被用来和key配合从表中查询记录出来。...1.3.9rows 这一列显示了估计要找到所需的行而要读取的行数,这个值是个估计值,原则上值越小越好。

    1K20

    PQ小问题小技巧8个,第一个就很多人都遇到了!

    大海:常见在搜狗输入法跟office365存在小冲突,换微软的拼音输入法就没问题。 2、PQ数据加载不完整问题 小勤:为什么PQ处理的数据加载到Excel时最后一行是一堆省略号?...大海:数据上载不全,在某些版本里偶然存在这种情况,一般在Excel里再刷新一下数据即可。 3、整列替换技巧 小勤:PQ中,将一列中的所有值替换为null空值,怎么操作好呢?...大海:原列删掉,直接加一列空的 小勤:加一列空的,怎么加呀? 大海:添加自定义列,=null 4、追加多个查询 小勤:我的追加查询怎么不能同时追加多个表?只能一个一个合并?...6、超过百万行数据加载到Excel 小勤:我目前处理的数据已经超过100万行了,我想要把power query中清洗的数据加载到CSV中保存,但是在加载的时候总是显示不能完全加载缺失数据,跟Excel一样只能显示...8、数据超长出错 小勤:为什么我的手机号码显示不出来? 大海:点到错误格子里右侧空白的地方看一下错误提示信息? 小勤:说是什么超出64位整数值范围,什么意思?

    2.4K30

    快问快答,MySQL面试夺命20问

    数据库架构 说说MySQL 的基础架构图 给面试官讲一下 MySQL 的逻辑架构,有白板可以把下面的图画一下,图片来源于网络。 ?...(3)当索引列大量重复数据时,可以把索引删除掉 比如有一列是性别,几乎只有男、女、未知,这样的索引是无效的。 2,优化查询 应尽量避免在 where 子句中使用!...(6)key 列:这一列显示 mysql 实际采用哪个索引来优化对该表的访问。 (7)key_len 列:显示了mysql在索引里使用的字节数,通过这个值可以算出具体使用了索引中的哪些列。...(8)ref 列:这一列显示了在key列记录的索引中,表查找值所用到的列或常量,常见的有:const(常量),func,NULL,字段名。...(9)rows 列:这一列是 mysql 估计要读取并检测的行数,注意这个不是结果集里的行数。 (10)Extra 列:显示额外信息。

    97020

    查找替换,你真的会用吗?

    接下来,让我们通过招聘网站上获取的一份职位数据集,像剥洋葱一样去认识一下这位既熟悉又陌生的朋友。 1.如何查找替换? 一眼望去,我对薪水这一列最感兴趣。...这种需求可以将单元格的格式替换为想要的颜色,这样可以把符合条件的数据高亮显示: 1)将“教育要求”这一列里符合“本科”条件的单元格高亮显示成黄色 2)将“工作年限要求”这一列里符合“3”年的单元格高亮显示成黄色...需求:我想从这个招聘职位数据集中精准的找到“数据分析师”的岗位。 为什么说精准呢?俗话说,没有比较没有。。所以先来一波对比操作。...查找功能中需要勾选“单元格匹配”的应用场景也是很广泛的。 比如这份职位数据表中,公司所在位置有“上海市”和“上海”两种值。我需要规范一下表格,查找“上海”,替换为“上海市”。...1)*:星号表示任意多个字符 上面查找了职位的薪水、学历、工作年限之后,我要选择公司了。现在我只想初步查看一下“公司简称”这一列中含有“科技”内容的公司(科技,很高大上有木有?),怎么查找呢?

    1.2K10

    职场Excel:查找替换,你真的会用吗?

    想转行的朋友看这个课也够了。点击下方小程序开启数据分析升职加薪密码: 1.如何查找替换?一眼望去,我对薪水这一列最感兴趣。现在我想知道这些职位的最低薪水、最高薪水、平均薪水的值是多少?...这种需求可以将单元格的格式替换为想要的颜色,这样可以把符合条件的数据高亮显示: 将“教育要求”这一列里符合“本科”条件的单元格高亮显示成黄色 将“工作年限要求”这一列里符合“3”年的单元格高亮显示成黄色...需求:我想从这个招聘职位数据集中精准的找到“数据分析师”的岗位。 为什么说精准呢?俗话说,没有比较没有。。所以先来一波对比操作。...查找功能中需要勾选“单元格匹配”的应用场景也是很广泛的。 比如这份职位数据表中,公司所在位置有“上海市”和“上海”两种值。我需要规范一下表格,查找“上海”,替换为“上海市”。...1)*:星号表示任意多个字符 上面查找了职位的薪水、学历、工作年限之后,我要选择公司了。现在我只想初步查看一下“公司简称”这一列中含有“科技”内容的公司(科技,很高大上有木有?),怎么查找呢?

    29910

    MySQL简单基础优化方案

    MySQL优化方案一、MySQL优化理论1.优化原则减少磁盘的IO次数,尽量按照索引查找,避免全表扫描。只查询用到的数据,没用到的数据不要查询,减少查询结果数据大小。...总结:最主要的优化策略还是索引优化和SQL优化,之后就是再调整下Mysql的配置参数,想读写分离、分库分表在系统架构设计的时候就需要确定,后续变更的成本太高。...6. possible_keys列这一列显示查询可能使用哪些索引来查找。7. key列这一列显示mysql实际采用哪个索引来优化对该表的访问。...8. key_len列这一列显示了mysql在索引里使用的字节数,通过这个值可以算出具体使用了索引中的哪些列。...9. ref列这一列显示了在key列记录的索引中,表查找值所用到的列或常量,常见的有:const(常量),字段名(例:film.id)10. rows列这一列是mysql估计要读取并检测的行数,注意这个不是结果集里的行数

    24520

    八种方式实现多条件匹配

    之前在Excel内部的分享交流群和别的讲师探讨了多条件匹配有哪些实现方式。 围观的市民刘先生表示:我活了二十多年,看见斗图的比较多,这么无聊斗Excel使用技巧的第一次见! 为了更好的装逼,哦!...先回想一下IF函数的用法 IF(判断条件,为真的时候返回什么,为假的时候返回什么) {1,0}啥意思呢?其实通俗理解这个就是两列,第一列的数字都是1,第二列的数字都是0。...第一列变成了如果两者均相等才显示为1,如果有其中任意一个不等都是0,则最终结果就是0 第二列就是心中评分。...有上文的铺垫,我不再累述了! 大大的提醒:下面的方法只适用于返回值是数字的!如果是返回值是文本,只能用上面的哦!...方法七:Sumproduct函数实现 Sumproduct曾经我单独写过一篇文章,感兴趣可以看一下! 点我查看! ?

    12.9K41

    为什么power Pivot里导入的数据少列了?

    小勤:我用Power Pivot接入的数据表,明明数据源表里有这一列,但数据模型里却没有啊!如下图所示: 大海:你这个数据是从其他Excel工作簿里导进来的? 小勤:对啊。...那不应该也是可以联动刷新的吗? 大海:当然是可以的。但是,有一个情况你要了解一下:如果数据源表里增加了列,你要再设置一下,才能显示出来。 小勤:啊?怎么设置呢?...大海:其实很简单,选中你要更新的模型表,单击“设计”菜单中的“表属性”按钮,在弹出的对话框中,勾选上你新加的列,然后单击“保存”按钮即可,如下图所示: 小勤:原来这样啊。...我正奇怪那个表属性按钮是干嘛用的呢。咦,为什么这个模型表里的“表属性”按钮是不能用的? 大海:你这个表是在数据模型所在的Excel文件里直接添加到数据模型的吧? 小勤:对的。...大海:用这种方法添加到数据模型的表是会自动刷新的,也不能通过“表属性”来选择其中的列。 小勤:啊。

    89620

    Sqlite数据库使用---基础研究

    sqlite3命令行工具,在terminal执行命令,来演示下各大神通....是不是感觉表中的每一行数据像是一个对象,然后每一列是该对象所包含的成员?...注意,为了看起来简单明了,上述语句我添加了换行,所以直接复制粘贴是不可以的,老老实实自己敲吧 当然,我在创建表之前,已经使用sqlite3 testDB.db创建过数据库了,所以目前表存在于testDB.db...不记得可以用.schema命令查看一下。 在创建表时,我们在每一个数据类型后有写not null,也就是要求非空。 所以赋值时要求非空的列是必须要赋值的。...order by 除了基本操作,还有排序操作也会经常遇到 排序分为 升序ascend或者是降序descend.语法中分别未asc和desc 按哪一列排序,也就是说要根据哪一列的比较结果来排序 在查询时进行排序的基本语句结构可以是

    1.3K00

    MySQL入门,问题不大【增删改查极速上手】

    ,这样的一些小Demo,大家在Java基础的学习中应该都是做过的,那么我们下面就从这个问题讲起~ (二) 为什么使用数据库?...P 端口 -u用户名 -p 举例:用户名:root,密码:root99 mysql -uroot -proot99 这种情况下,会弹出一个警告,它认为在命令行中明文的输入密码是不安全的 说明:我用的是...mysql -h 192.168.3.144 -P 3306 -uroot -p 这种方式用来连接远程的数据库,我这里用我本地的虚拟机演示了一下 ?...② 约束条件 约束,就是针对属性值的一些约束条件,只针对某一列,叫做列级约束、针对多列属性的约束,叫做表级约束,怎么理解呢?...表名 MODIFY 列名 新数据类型; 4、修改表的字符集 ALTER TABLE 表名 CHARACTER SET 字符集名称; 5、添加一列 ALTER TABLE 表名 ADD 列名 数据类型

    76630
    领券