Why is the IsEqual (=) statement faster than the IsNotEqual (<>) statement in Oracle?

As the name says, if anyone gets an answer I would like to know. I searched Google, but could not find a direct answer.

Example:

It works

SELECT COUNT(*) FROM Table1 TB1, Table2 TB2
WHERE TB1.Field1 = TB2.Table2 

It seems to take hours

SELECT COUNT(*) FROM Table1 TB1, Table2 TB2
WHERE TB1.Field1 <> TB2.Table2 
+5
source share
4 answers

, SQL - , . , , , . , (, ). , , , , , , .

= , . , , , .

A <> , , (, , ). , .

+11

SQL. , Field1 Table2. , .

, , , -, Field1 <> Table2.

1

Field1
------
1
2
5
9

Table2

Table2
------
3
4
5
6
9

Query1 2, 5 9 .

Query2 18, .

, .

+12

, , .

+1

( )

Table1, Table2?

,

SELECT COUNT(*) FROM Table1 TB1
WHERE NOT EXISTS
     (SELECT * FROM Table2 TB2 
      WHERE TB1.Field1 = TB2.Field2 )

, ,

SELECT COUNT(*)
FROM
(
SELECT Field1 FROM Table1 
MINUS
SELECT Field2 FROM Table2
) T
+1

All Articles