我正在尝试检查我的表中是否存在记录。我发现最有效的方法是使用 DUAL 表。但是,我不能 100% 确定这种方法是如何工作的。我有一个包含数千条记录(几乎一百万条)的表。这两种方法之间是否有任何重大区别,请记住表中存在很多记录:
方法一:
SELECT 1
FROM DUAL
WHERE EXISTS(SELECT *
FROM MY_TABLE
WHERE MY_COLUMN_PK = 'MY_VALUE'
AND MY_COLUMN = 'MY_VALUE')
方法二:
SELECT 1
FROM DUAL
WHERE EXISTS(SELECT *
FROM MY_TABLE
WHERE MY_COLUMN_PK = 'MY_VALUE'
AND MY_COLUMN = 'MY_VALUE'
AND ROWNUM=1)
我已经在我的数据库客户端软件中执行了这两个查询,并且两个查询的执行时间相似。
注意: MY_COLUMN_PK
是我的表的主键,而MY_COLUMN
不是主键并且没有索引。