|
|
|
| Здравствуйте, уважаемые пользователи форума!
У меня имеется две таблицы.
Первая таблица (Users) имеет такие поля:
int ID
....
Вторая таблица (History) имеет такие поля:
int ID
int userID
....
|
Небходимо вывести с таблицы History все поля + найти userID в таблице пользователей и от туда вытащить 2 поля.
Можно поступить так:
SELECT *, (SELECT field1 FROM `Users` WHERE `ID` = `History`.`userID`) as field1, (SELECT field2 FROM `Users` WHERE `ID` = `History`.`userID`) as field2 FROM `History`
|
Но как по мне это ресурсоёмко, если учесть что записей в таблице history порядка 100 тысяч. Какие есть варианты объединения двух вложенных селект. | |
|
|
|
|
|
|
|
для: p.pavluxa
(21.08.2012 в 14:37)
| | а такой вариант разве не подходит?
SELECT `History`.*, `Users. field1,`Users.field2 FROM `Users`,`History` WHERE `Users`.`ID` = `History`.`userID`
|
| |
|
|
|
|
|
|
|
для: Lotanaen
(21.08.2012 в 15:27)
| | Это будет менее ресурсоёмко? | |
|
|
|
|
|
|
|
для: p.pavluxa
(21.08.2012 в 17:41)
| | Выполните EXPLAIN обоих запросов на реальных объёмных таблицах и покажите. Но, скорее всего да - менее ресурсоемко. | |
|
|
|
|
|
|
|
для: Sfinks
(21.08.2012 в 21:31)
| | Супер! Работает в три раза быстрей! | |
|
|
|