目前我有几个pivot
表,mysql
具有这种结构:
user_id | organisation_id | 类型
4 3 external
4 3 internal
6 4 internal
7 4 external
6 5 external
7 5 external
7 6 internal
如您所见,在我的type
专栏中,我只使用external
和internal
。目前,type
列是enum
并已编制索引。
这是一个很好的数据库结构还是我应该为列type
创建一个单独的表?
我在几张桌子上遇到了这个"问题",所以这是一个重要的决定。桌子可能会变得很大。
在这种情况下你会怎么做?
这在很大程度上取决于您要针对此表运行的查询类型。
如果您计划运行忽略type
列的查询,即不关心它是内部的还是外部的,或者决定它们在运行时想要什么type
的查询,例如通过用户输入,那么将所有内容保存在单个表中有很大的优势。
通常,与全表扫描相比,索引选择性较差的列(即其两个类别中每个类别中大约一半的行(只能提供边际性能改进。 将表一分为二也是如此:它将使查询更加复杂,几乎没有改进。