首页 > 解决方案 > 使用 bytea 作为表索引和连接条件

问题描述

我最近接受了一个需要使用 AWS RDS Aurora Postgre 数据库的职位。我有几年使用 MySQL、SQL Server 和 RDS 的经验,但这是我第一次使用 postgre。我最初的反应是 postgre 看起来有多么不同,以及它似乎是开箱即用的。我注意到的一件事是,我需要小心,不要想当然地认为我过去实施的一些政策/程序最适合邮政。这导致了我的问题,当我设计表和数据库时,我总是实现 SHA 或 MD5 哈希函数来处理复合键以简化和更快地连接到其他表。我在当前的 postgre 项目中使用了相同的策略 (SHA512),在 postgre 中,此数据类型称为“bytea”。问题是当使用这个 bytea 加入其他表时,我们的性能似乎很糟糕,让我想知道在 postge 中是否有更好或标准的方法来处理这个问题?我是否应该将除 bytea 之外的其他东西视为性能问题的原因?

标签: postgresqljoinhashamazon-rdsbytea

解决方案


我从未在这个论坛中看到过这种 postgres 方法。在 postgres 中,我们可以定义主键外键,都指一个列或一组列。然后,JOIN通常是指连接表中的一组列,请参阅手册。我看不出使用 SHA 或 MD5 哈希来提高 JOIN 的性能有什么好处,我宁愿认为性能会因为哈希过程而降低。在 postgres 中,加速查询的典型解决方案是在表上定义索引。索引是 postgres 中一个强大的解决方案,包括HASH 索引,这听起来像你在 MySQL 中使用的?


推荐阅读