SQL中存在一个值-性能有效的

SQL中存在一个值-性能有效的,sql,tsql,select,database-performance,hana,Sql,Tsql,Select,Database Performance,Hana,昨天有人问我一个问题,问题如下: “找出数据库表中是否存在某个值的最有效方法是什么?” 不需要检索数据,只是为了确定数据库表中是否存在值X 例如: ROW_ID ARTIKEL SUPPLIERID ORGID PIECES COSTPRICE DISCOUNT VALUE_DRILL_DOWN 1 TV SONY 922 6 110

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

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

不需要检索数据,只是为了确定数据库表中是否存在值
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
”的存在。性能高效的查询将是第二个查询。 有没有更好的方法或功能来实现这一点?有什么建议吗


提前感谢

查看解释计划,以明确了解。我想你会看到同样的表演

尝试以下改进方法:

select 'found it' from EXAMPLE_TABLE where ARTIKEL='Radio'
limit 1;

看一个解释计划,以确定地知道。我想你会看到同样的表演

尝试以下改进方法:

select 'found it' from EXAMPLE_TABLE where ARTIKEL='Radio'
limit 1;
对于MySQL,请选择:

SELECT EXISTS(SELECT 1 FROM EXAMPLE_TABLE WHERE ARTIKEL = 'Radio' LIMIT 1);
还要确保有适当的索引:

CREATE INDEX ET_ARTIKEL_IDX ON EXAMPLE_TABLE(ARTIKEL);
资源:

虽然我对谈论SQL Server没有信心,但博客文章也指出,
是存在的
才是前进的方向


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

对于MySQL,请使用:

SELECT EXISTS(SELECT 1 FROM EXAMPLE_TABLE WHERE ARTIKEL = 'Radio' LIMIT 1);
还要确保有适当的索引:

CREATE INDEX ET_ARTIKEL_IDX ON EXAMPLE_TABLE(ARTIKEL);
资源:

虽然我对谈论SQL Server没有信心,但博客文章也指出,
是存在的
才是前进的方向




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

我发现有无“限制1”的性能相同。您认为这些是计算数据库表中的值的唯一方法吗?@SangameshHs我假设您正在使用以上6条示例记录来测试这一点…?@CJBS绝对正确。这只是一个示例表,使我的问题更清楚,让人能够理解:)我发现有和没有“限制1”的性能是相同的。您认为这些是计算数据库表中的值的唯一方法吗?@SangameshHs我假设您正在使用以上6条示例记录来测试这一点…?@CJBS绝对正确。这只是一个示例表,使我的问题更加清晰,让人能够理解:)这是mysql和sql server的标签。到底是哪一个?@CJBS什么都可以。只是想知道最有效的方法。Sangamesh,答案可能取决于数据库管理系统。@AnthonyAccioly哦,我想这些简单的SQL查询对所有数据库管理系统都是一样的。我目前正在使用HANA数据库。这是mysql和sql server的标签。到底是哪一个?@CJBS什么都可以。只是想知道最有效的方法。Sangamesh,答案可能取决于数据库管理系统。@AnthonyAccioly哦,我想这些简单的SQL查询对所有数据库管理系统都是一样的。我目前正在使用HANA数据库。实际上,我删除了标记,并添加了HANA DBMS,正如OP所说的,这就是他正在使用的。请参阅上面的OP评论:“哦,我以为这些简单的SQL查询对于所有DBMS都是一样的。我目前正在使用HANA数据库”。你还有我的一票@安东尼:谢谢你的努力。我真的很感激。修复了答案评论呵呵。Sangamesh,没问题:)。实际上,我删除了标记,并添加了hana DBMS,正如OP所指出的,这就是他正在使用的。请参阅上面的OP评论:“哦,我以为这些简单的SQL查询对于所有DBMS都是一样的。我目前正在使用HANA数据库”。你还有我的一票@安东尼:谢谢你的努力。我真的很感激。修复了答案评论呵呵。桑加梅什,没问题:)。