|
|
|
| Помогите оптимизировать запрос если это возможно а то выполняется по 1.5 секунд.
Мне нужно проверить есть ли число в какой-либо из 3-х таблиц.
Вот мой запрос:
$number = 2133435;
$stroka_query = mysql_query("SELECT `number` FROM `table1` WHERE `number`='{$number}' LIMIT 1
UNION SELECT `number` FROM `table2` WHERE `number`='{$number}' LIMIT 1
UNION SELECT `number` FROM `table3` WHERE `number`='{$number}' LIMIT 1") or exit (mysql_error());
|
| |
|
|
|
|
|
|
|
для: danya_nyjniy
(26.05.2012 в 18:54)
| | У вас столбец number проиндексирован (во всех трех таблицах)?
PS LIMIT тут бесполезен - он только к полной выборке из всех трех таблиц применяется, т.е. можно оставить один после всех UNION. | |
|
|
|
|
|
|
|
для: cheops
(26.05.2012 в 20:33)
| | Да, столбец number есть во всех трёх таблицах. | |
|
|
|
|
|
|
|
для: danya_nyjniy
(26.05.2012 в 20:47)
| | А он проиндексирован? | |
|
|
|
|
|
|
|
для: cheops
(26.05.2012 в 21:29)
| | В смысле? Я не очень в этом силён... | |
|
|
|
|
|
|
|
для: danya_nyjniy
(26.05.2012 в 21:35)
| | Столбец можно проиндексировать, т.е. фактически создать копию столбца, которая будет поддерживаться в отсортированном виде средствами СУБД. Поиск по таким индексированным столбцам осуществляется исключительно быстро. Вам какие клиенты доступны, есть phpMyAdmin? | |
|
|
|