什么是更好的:使用find_in_set或构建另一个表?

时间:2015-10-11 10:33:17

标签: mysql sql performance

我有一个用户和客户的应用程序 我需要为每个用户创建权限如果他可以访问所有客户端或其中一些客户端。

我感到困惑:

  • 向用户表添加一个新的逗号分隔列,当我检查存在时需要使用 FIND_IN_SET 函数,
  • 使用client_id和user_id创建权限表这只需要 SELECT和WHERE 方法。

你能帮我决定什么样的表现更好吗?

1 个答案:

答案 0 :(得分:4)

首先,您使用的是Relational Database。有一种叫做第一范式[1NF]

的东西

我强烈建议您阅读Database Normalization

  

如果满足以下条件,则数据库处于第一范式   条件:

     

仅包含原子值

     

没有重复的小组

  

原子值是一个无法分割的值。

因此,不是使用逗号分隔值添加新列,而是创建新表。