gpt4 book ai didi

mysql - 正则表达式 vs 加入性能 Mysql

转载 作者:可可西里 更新时间:2023-11-01 07:58:59 25 4
gpt4 key购买 nike

我在犹豫应该使用哪种类型。确实会有很多 ID 和组,通常他们教我做多个表,但带有正则表达式的第二个版本似乎很棒而且冗余更少。我很想知道这两个版本哪个更好。

+----+   +----+-------+
| ID | | ID | Group |
+----+ +----+-------+
| 1 | | 1 | gr1 |
| 1 | | 1 | gr2 |
| 2 | | 2 | gr2 |
| 2 | | 2 | gr3 |
+----+ +----+-------+
SELECT * FROM tbl1 join tbl2 USING(ID) WHERE Group="gr1";

+----+-----------+
| ID | Group |
+----+-----------+
| 1 | gr1,gr2 |
| 2 | gr2,gr3 |
+----+-----------+
SELECT * FROM tbl1 WHERE Group REGEXP '(^|,)gr1($|,)';

最佳答案

只要您有小 table ,您就可以随意使用两者。

如果你期望表增长,你确实需要选择第一个选项。背后的原因是使用 where regexp 的查询不会使用索引。如您所知,索引是快速查询的关键。
如果您使用的是 InnoDB,请定义一个链接两个表的外键。

你说,你发现第一个选择比第二个选择更多冗余。在我看来不是。考虑到这一点,您的草图可能表明存在误解。它应该看起来像这样,即表 1 中每个 id 只有一行,因此没有冗余。

      Tbl1                Tbl2
+----+----------+ +----+-------+
| ID |Other cols| | ID | Group |
+----+----------+ +----+-------+
| 1 | | | 1 | gr1 |
| 2 | | | 1 | gr2 |
+----+----------+ | 2 | gr2 |
| 2 | gr3 |
+----+-------+

关于mysql - 正则表达式 vs 加入性能 Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20032343/

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