首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex vs Join Performance

Regex vs Join Performance
EN

Stack Overflow用户
提问于 2013-11-17 15:16:30
回答 1查看 214关注 0票数 3

我犹豫不决,我应该使用哪种类型。实际上会有很多ID和组,通常他们会教我做多个表,但是使用regexp的第二个版本似乎很棒,而且不那么多余。我很想知道这两种版本更好。

代码语言:javascript
复制
+----+   +----+-------+
| 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($|,)';
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-17 15:27:52

只要你有小桌子,你就可以任意使用。

如果您期望表会增长,那么您确实需要选择第一选择。背后的原因是,使用where regexp的查询不会使用索引。正如您所知,索引是快速查询的关键。

如果您使用的是InnoDB,请定义一个链接这两个表的外键。

你说,你发现第一选择比第二选择有更多的冗余。在我看来不是这样的。考虑到这一点,你的素描可能会显示出一种误解。它应该是这样的,即表1中每个id只有一行,因此没有冗余。

代码语言:javascript
复制
      Tbl1                Tbl2
+----+----------+   +----+-------+
| ID |Other cols|   | ID | Group |
+----+----------+   +----+-------+
| 1  |          |   | 1  |  gr1  |
| 2  |          |   | 1  |  gr2  |
+----+----------+   | 2  |  gr2  |
                    | 2  |  gr3  |
                    +----+-------+
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20032343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档