我想知道在SQLite (或其他SQL引擎)中使用CASE语句来替换数据是否是不可取的。例如,假设我有一个查询。
SELECT Users,
CASE WHEN Active = 0 THEN 'Inactive'
WHEN Active = 1 THEN 'Active'
WHEN Active = 2 THEN 'Processing'
ELSE 'ERROR' END AS Active
FROM UsersTable;什么时候创建引用表并执行连接更好。在本例中,我将创建一个包含ActiveID和ActiveDescription的表'ActiveStatesTable‘,并执行连接。
发布于 2010-04-02 05:36:19
CASE语句是首选语法:
匹配,就不会执行其余的评估
发布于 2010-04-02 05:39:12
使用单独的表和连接绝对是编写此代码的更简洁的方式。例如,如果您想要编写另一个具有相同映射的查询,会发生什么情况?您必须将CASE语句复制到新的查询中,并且复制重复是不好的。如果需要添加新的活动状态,会发生什么情况?
在性能方面,JOIN和CASE都应该相当便宜。CASE可能会稍微提高性能,因为它的计算过程很短,而且只有几个CASE,但在我看来,JOIN是更干净、更灵活、更SQL-ey的解决方案。
发布于 2010-04-02 06:22:03
CASE应该要便宜得多,因为它不应该涉及任何I/O,但对于小型表,连接也不是那么昂贵(但请测试它)。
问题是,如果您需要在多个查询中维护这种情况,是否需要在其上建立任何引用完整性。
https://stackoverflow.com/questions/2563811
复制相似问题