0

昨天有人问了我一个问题,如下:

“找出数据库表中是否存在某个值的最有效方法是什么?”

检索数据不是必需的,只是为了查明X数据库表中是否存在值。

例如:

 ROW_ID      ARTIKEL      SUPPLIERID    ORGID      PIECES      COSTPRICE      DISCOUNT    VALUE_DRILL_DOWN
1           TV            SONY          922         6            110           2.5         14
2           Radio         SONY          922         10           80            1            4
3           Computer      SONY          922         6            65            1.5          0
4           Laptop        SONY          922         14           95            1.5          0
5           Mobile        SONY          922         18           95            1.5          0
6           Playstation   SONY          922         4            95            1.5          0

现在,如果我必须在上表中找到记录的存在"Radio"

SELECT * from EXAMPLE_TABLE where ARTIKEL='Radio';
OR
Select "ARTIKEL" from EXAMPLE_TABLE where ARTIKEL='Radio';
OR
Select COUNT(*) from EXAMPLE_TABLE where ARTIKEL='Radio';

我想说,根据我的说法,在表中找到值“”的存在有三种可能性RADIO。性能高效的查询将是second查询。有没有更好的方法可以做到这一点或任何功能来实现这一点?有什么建议么?

提前致谢

4

2 回答 2

3

看一个解释计划就可以确定地知道。我怀疑你会看到相同的性能。

试试这个想法进行改进:

select 'found it' from EXAMPLE_TABLE where ARTIKEL='Radio'
limit 1;
于 2014-02-12T08:08:00.990 回答
2

对于 MySQL,请使用:

SELECT EXISTS(SELECT 1 FROM EXAMPLE_TABLE WHERE ARTIKEL = 'Radio' LIMIT 1);

还要确保您有正确的索引:

CREATE INDEX ET_ARTIKEL_IDX ON EXAMPLE_TABLE(ARTIKEL);

资源: 测试 MySQL 表中是否存在行的最佳方法

虽然我对谈论 SQL Server 没有信心,但这篇博文也表明这EXISTS是要走的路。


更新: OP @CJBS更新了删除 MySQL 和 SQL Server 标记的问题,但我将在此处保留答案以供进一步参考。

于 2014-02-12T08:14:55.307 回答