我不知道原来这个联合主键是干啥用的,应该是可以删掉的。我很不明白的一个问题是,我搜索条件是随机的[阿里云PolarDB]

我不知道原来这个联合主键是干啥用的,应该是可以删掉的。

我很不明白的一个问题是,我搜索条件是随机的,本身的 page 也应该就是随机的啊,那这样子的话,单列和多列不就都是随机吗…

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
4 条回复 A 作者 M 管理员
  1. 联合主键(Composite Primary Key)是一种在数据库中定义主键的方法,它由多个列组成,以确保数据的唯一性和一致性。联合主键的作用是唯一标识表中的每一行数据,以确保数据的唯一性和完整性。

    关于你的问题,我理解你可能是在讨论分页查询的情况。在分页查询中,我们通常使用随机搜索条件来获取不同的数据结果。然而,单列和多列的情况并不一定是随机的。

    单列索引(Single-Column Index)是基于表中的某一列创建的索引,它适用于对某一特定列的频繁查询。单列索引可以提高查询效率,特别是当查询条件与该列的常见值匹配时。

    多列索引(Composite Index)是基于表中的多个列创建的索引,它适用于对多个列的组合查询。多列索引可以提高查询效率,特别是当查询条件涉及到多个列的组合匹配时。

    因此,单列索引和多列索引的选择取决于查询条件和数据分布的情况。如果查询条件涉及到多个列的组合匹配,那么使用多列索引可以提供更好的查询性能。如果查询条件仅涉及到单一列的查询,那么使用单列索引可能更为合适。
    当物理表中主键的形式为联合主键时,可以在写维度逻辑表的主键定义逻辑时,通过计算源支持的一些函数,比如concat()函数,将两个字段合并为一个主键字段,实现逻辑表主键的定义

  2. 楼主你好,联合主键在数据库中的作用是保证数据表中数据的唯一性,并且可以提高查询效率。如果你确认这个联合主键没有实际作用,可以考虑删除。

    关于你的搜索条件和page是随机的问题,单列索引和多列索引的作用还是有所区别的。单列索引在查找数据时只有一个关键词,如果查询条件中只包含这一个关键词,那么单列索引将会非常有效。但是如果查询条件中包含多个关键词,那么单列索引的效率就会大大降低。而多列索引则可以通过对多个列进行组合,来实现更加高效的查询。如果你的查询条件中包含多个关键词,可以考虑使用多列索引来提高查询效率。

  3. 使用单列主键或者联合主键,取决于你的业务需求。如果你的查询操作涉及到某个特定的列,或者需要使用多个条件进行搜索和排序,那么使用主键索引会更高效。如果你的查询操作是随机的,并且不依赖于特定的列或条件,那么可能两者的成本相差不大。

  4. 联合主键的作用是确保多列的组合值的唯一性。它适用于那些需要同时考虑多个列来标识唯一记录的情况。通过定义联合主键,可以保证表中不会存在重复的组合值。

    关于搜索条件和页码的随机性,单列和多列主键在查询上的性能差异并不仅仅取决于数据的随机性。

    对于单列主键,当你使用随机搜索条件时,数据库可以更快地利用单列索引定位到所需的行,因为单列索引已经按照单列主键进行了排序。这样可以减少数据库扫描的范围,提高查询效率。

    而对于联合主键,当搜索条件是随机的时候,数据库可能需要遍历整个联合主键索引,无法直接定位到所需的行。这会导致性能下降,并且随着索引尺寸的增大,查询成本也会增加。

    总结起来,单列主键在随机搜索条件下通常具有更好的性能,因为它们可以更快地定位到所需的行。但在某些情况下,联合主键可能是必要的,特别是当需要同时考虑多个列的唯一性时。在设计数据库时,需要根据具体的业务需求和数据模式来选择适合的主键类型。

  5. 根据内容,好像组合主键的必要性好像不大,但还是得看业务需求,组合主键和include 不是一回事儿。两种索引方式。参考:https://space.bilibili.com/2070322174

    此答案来自钉钉群“PG|POLARDB技术进阶”