gpt4 book ai didi

mysql - 相关项目 - 在记录之间建立双向关联

转载 作者:行者123 更新时间:2023-11-29 03:39:24 24 4
gpt4 key购买 nike

我正在使用 MySql 数据库,其中有一个名为 books 的表。

我想实现一个系统,用户可以通过该系统关联两个项目,以便在查看一个项目时,它会显示一个指向另一个项目的链接。

我的问题是,当 book1 (id==1) 链接到 book2 时,我想这样做(id==2),book2 也链接到 book1,反之亦然。

我想这样做的方法是创建一个新表,称为 relations 并且至少有两个 cols col1col2,我在其中保存了所有相关项目的 ID。例如,book1book2 的行如下所示:

  —————————————————
| COL1 | COL2 |
—————————————————
1| 1 | 2 |
—————————————————

因此,在查看 book1 时,我会SELECT * FROM 'relations' WHERE COL1 = '1' OR COL2 = '1'

我想这样应该可以,但我想知道是否有更好/更有效的方法来处理这个问题。

最佳答案

“or”子句是索引使用的 killer 锏。我会说如果你的关系是对称的,只需将两对添加到表中 - 所以 1-2 和 2-1。

它使所需的空间翻倍,但是 - 这就是 SQL。 ;-)

编辑澄清“杀死索引”:当您在 col1 上有索引时,请求

select col2 from correlation_table where col1 = 12

非常快,而语句

select col1, col2 from correlation_table where col1 = 12 or col2 = 12

很慢,一旦你有很多关系,你就需要在 col1 上有一个索引,在 col2 上有一个索引,你必须将查询分成

    select col1, col2 from correlation_table where col1 = 12
union
select col1, col2 from correlation_table where col2 = 12

关于mysql - 相关项目 - 在记录之间建立双向关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16265531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com