2013-07-12 4 views
0

Я столкнулся с проблемой оптимизации запроса. Надеюсь, я получу помощь. В сценарии есть четыре таблицы.
Проблема оптимизации запросов Mysql

Table 1 [asset_id, asset_name, User_id]. 
Table 2 [company_id, Company_name] 
Table 3 [User_id, User_name] 
Table 4 [Map_id, User_id, Company_id ] 

Мой результат будет проверять пользователей из той же компании могут не иметь возможность загружать тот же актив, проверка актива будет на уровне компании. Я уже написал запрос, который также служит цели, но мне нужно исключить вспомогательный запрос для оптимизации цели.
В запросе, который я написал, есть подзапрос. Моего запрос

SELECT COUNT(tg.asset_id) 
    FROM Table 1 tg 
INNER JOIN Table 4 mcu 
    ON ((tg.User_id = mcu.User_id ) 
    AND mcu.Company_id = (select Table 4.Company_id 
          from Table 4 
          where Table 4.User_id = 1)) 
WHERE tg.asset_name = 't1' ; 
+2

Пожалуйста выкладывает запрос. –

+0

Да, я забыл сделать это – Santanu

+0

Вы не использовали Таблицы 2 и 3. Вы что-то пропустили? – KaeL

ответ

-1

подзапроса кажется ненужным для этого запроса, поскольку он также использует таблицу 4.

SELECT COUNT(tg.asset_id) FROM Table 1 tg 
INNER JOIN Table 4 mcu ON tg.User_id = mcu.User_id 
WHERE tg.asset_name = 't1' 
AND mcu.ClientID = mcu.Company_id 
AND mcu.User_id = 1; 
+0

. Здесь необходимо, чтобы он проверял, какие именно активы уже были загружены пользователем той же компании. – Santanu

+0

I означает, что вам не нужен этот подзапрос, так как он также ссылается на таблицу 4. Вы можете просто включить условия в основной запрос. –

+0

, пожалуйста, проверьте мой вопрос в вопросе один раз, когда я отредактировал запрос – Santanu

0

Надеется, что это может быть полезно ::

SELECT 
COUNT(tg.asset_id) 
FROM Table 1 tg 
INNER JOIN Table 4 mcu ON (tg.User_id = mcu.User_id and Company_id = ClientID) 

WHERE tg.asset_name = 't1' and mcu.User_id = 1 
+0

, пожалуйста, проверьте запрос один раз, когда я отредактировал запрос. Здесь необходимо, чтобы он проверял, что определенные активы уже были загружены пользователем той же компании – Santanu