我想检查我的表中是否存在记录。我发现最有效的方法是使用DUAL表格。但是,我不能100%确定这种方法的工作原理。我有一张包含数千条记录(差不多50万)的表格。有这两种方法之间的主要区别,牢记了很多纪录都存在于表:检查表中是否存在记录
方法1:
SELECT 1
FROM DUAL
WHERE EXISTS(SELECT *
FROM MY_TABLE
WHERE MY_COLUMN_PK = 'MY_VALUE'
AND MY_COLUMN = 'MY_VALUE')
方法2:
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
不是主键,也没有索引。
“方法2”更有效。 –
我们不能不知道你有哪些主要和唯一的密钥。 –
@HardikVinzava方法1选择表中的所有记录,而方法2仅选择第一条记录。我知道方法2更有效,但我为什么获得相同的执行时间? – user1135357