3
Если я хочу получить логическое значение 1, если идентификатор находится в одной из таблиц, а 0, если его нет, что является лучшим/быстрым способом?Множество существует против объединения
A: 2 Exists с ИЛИ
SELECT
EXISTS(SELECT 1 FROM a WHERE id = 1)
OR EXISTS(SELECT 1 FROM b WHERE id = 1)
B: 1 Exists с UNION
SELECT EXISTS(
SELECT 1 FROM a WHERE id = 1
UNION
SELECT 1 FROM b WHERE id = 1)
C: Союз с лимитом
SELECT 1 FROM a WHERE id = 1
UNION
SELECT 1 FROM b WHERE id = 1
UNION
SELECT 0
LIMIT 1
Если у вас есть способ лучше, чем мой 3 решения, напишите также.
ОПИСЫВАЕТ:
А:
+------+-------------+-------+-------+---------------+---------+---------+-------+------+----------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+-------+-------+---------------+---------+---------+-------+------+----------------+
| 1 | PRIMARY | NULL | NULL | NULL | NULL | NULL | NULL | NULL | No tables used |
| 3 | SUBQUERY | a | const | PRIMARY | PRIMARY | 4 | const | 1 | Using index |
| 2 | SUBQUERY | b | const | PRIMARY | PRIMARY | 4 | const | 1 | Using index |
+------+-------------+-------+-------+---------------+---------+---------+-------+------+----------------+
Б:
+------+--------------+------------+-------+---------------+---------+---------+-------+------+----------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+--------------+------------+-------+---------------+---------+---------+-------+------+----------------+
| 1 | PRIMARY | NULL | NULL | NULL | NULL | NULL | NULL | NULL | No tables used |
| 2 | SUBQUERY | a | const | PRIMARY | PRIMARY | 4 | const | 1 | Using index |
| 3 | UNION | b | const | PRIMARY | PRIMARY | 4 | const | 1 | Using index |
| NULL | UNION RESULT | <union2,3> | ALL | NULL | NULL | NULL | NULL | NULL | |
+------+--------------+------------+-------+---------------+---------+---------+-------+------+----------------+
С:
+------+--------------+--------------+-------+---------------+---------+---------+-------+------+----------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+--------------+--------------+-------+---------------+---------+---------+-------+------+----------------+
| 1 | PRIMARY | a | const | PRIMARY | PRIMARY | 4 | const | 1 | Using index |
| 2 | UNION | b | const | PRIMARY | PRIMARY | 4 | const | 1 | Using index |
| 3 | UNION | NULL | NULL | NULL | NULL | NULL | NULL | NULL | No tables used |
| NULL | UNION RESULT | <union1,2,3> | ALL | NULL | NULL | NULL | NULL | NULL | |
+------+--------------+--------------+-------+---------------+---------+---------+-------+------+----------------+
«Использование буфер объединения» звучит дорого –