首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLite的CASE语句开销大吗?

问SQLite的CASE语句开销大吗?
EN

Stack Overflow用户
提问于 2010-04-02 05:27:32
回答 3查看 10.3K关注 0票数 10

我想知道在SQLite (或其他SQL引擎)中使用CASE语句来替换数据是否是不可取的。例如,假设我有一个查询。

代码语言:javascript
复制
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‘,并执行连接。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-02 05:36:19

CASE语句是首选语法:

  • 它是ANSI (92?),所以它在MySQL,Oracle,SQL Server,Postgres...与数据库供应商特定的IF语法不同,
  • 支持短时电路-一旦条件与

匹配,就不会执行其余的评估

票数 11
EN

Stack Overflow用户

发布于 2010-04-02 05:39:12

使用单独的表和连接绝对是编写此代码的更简洁的方式。例如,如果您想要编写另一个具有相同映射的查询,会发生什么情况?您必须将CASE语句复制到新的查询中,并且复制重复是不好的。如果需要添加新的活动状态,会发生什么情况?

在性能方面,JOIN和CASE都应该相当便宜。CASE可能会稍微提高性能,因为它的计算过程很短,而且只有几个CASE,但在我看来,JOIN是更干净、更灵活、更SQL-ey的解决方案。

票数 3
EN

Stack Overflow用户

发布于 2010-04-02 06:22:03

CASE应该要便宜得多,因为它不应该涉及任何I/O,但对于小型表,连接也不是那么昂贵(但请测试它)。

问题是,如果您需要在多个查询中维护这种情况,是否需要在其上建立任何引用完整性。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2563811

复制
相关文章

相似问题

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