关于SELECT请求的时间哪个解决方案最好?

时间:2011-11-02 10:25:32

标签: mysql query-optimization

我想知道关于这个问题的最佳解决方案是什么:

我有文章,我有类别,文章属于某个类别。有两种类型,用户定义和系统定义(如“收件箱”,“垃圾”等......)

所以问题是我应该为每个系统定义的类别只有一个项目,并且所有用户的所有文章都将附加到这些类别,或者我应该在创建用户时创建所有系统定义的类别,并附加这些类别给用户?

第一个解决方案将导致每个系统定义的类别中有很多文章,而第二个解决方案将导致类别中的大量“冗余”项目。哪种解决方案最好?

1 个答案:

答案 0 :(得分:0)

这是你的选择。这两种方法都有其优点和缺点。 如果您使用第一个解决方案,您的select语句将具有与此类似的WHERE子句:

WHERE (category.type = 'SYSTEM' OR category.user_id = :USER_ID)

第二个解决方案将简化您的选择语句:

WHERE category.user_id = :USER_ID

第二种解决方案会使添加用户变得更加复杂。您需要为用户创建系统定义的类别:

INSERT INTO CATEGORY (user_id, category_name, ...)  SELECT :USER_ID, system_category, ... FROM SYSTEM CATEGORY;

如果添加新系统类别,则需要为所有用户插入。