Avoid using the below operators in a WHERE clause due to index search is not working.
-
NOT IN
Case: useNOT IN-- DON'T SELECT name, id FROM customer WHERE status NOT IN ('3');
-- DO SELECT name, id FROM customer WHERE satus IN ('0', '1', '2', '4');
Recommend to use:
INEXISTS,NOT EXISTS[CHECK]
-
<>, !=
Case: use not equal operator (<>,!=)-- DON'T SELECT * FROM user WHERE gender != 0;
-- DO SELECT * FROM user WHERE gender > 0;
Recommend to use:
=>,>=,<,<=
-
NOT BETWEEN
Case: ranges withNOT BETWEEN-- DON'T SELECT name, publisher, price FROM book WHERE price NOT BETWEEN 0 AND 149;
-- DO SELECT name, publisher, price FROM book WHERE price BETWEEN 150 AND 300;
Recommend to use:
BETWEEN
-
NULL
Case: compare toNULLSELECT id, name, class FROM credit WHERE score IS NOT NULL;
SELECT id, name, class FROM credit WHERE score > ``;
-
LIKE %x%
Case: starts with%-- DON'T SELECT area_code FROM location WHERE city LIKE '%San%';
-- DO SELECT area_code FROM location WHERE city LIKE 'San%';
Recommend to use:
x%
-
OR
Case: useORRecommend to use:
UNION ALL
-
Converting values