2017-03-22 68 views
-1

例如說我有這個疑問,我想作爲一個VIEW「USER_DATA」我可以做從外子選擇表,其中選擇

SELECT 
    a.* 
FROM (
    SELECT 
     big_tbl.user_id, 
     COUNT(big_tbl.id) as `total` 
    FROM 
     big_tbl 
    GROUP BY 
     big_tbl.user_id 
) a 

如果我做SELECT * FROM user_data,它需要使用大約10秒鐘才能運行。如果我做SELECT * FROM user_data WHERE user_id = 1234大約需要10秒鐘才能運行。如果我這樣做,它需要分1秒

SELECT 
    a.* 
FROM (
    SELECT 
     big_tbl.user_id, 
     COUNT(big_tbl.id) as `total` 
    FROM 
     big_tbl 
    WHERE 
     big_tbl.user_id = 1234 
    GROUP BY 
     big_tbl.user_id 
) a 

反正我有可以做類似SELECT * FROM user_data WHERE big_tbl.user_id = 1234?或者,這是不可能做我的正確方法?

回答

0

你的問題很難理解。如果我理解正確,你問什麼,USER_ID必須住在兩個表中:

SELECT * 
FROM user_data 
WHERE user_id = 
     (SELECT user_id 
     FROM big_tbl 
     WHERE user_id = 1234); 
+0

我認爲這個問題是'user_data'不是表,這是一個'VIEW',當視圖是計算所有數據沒有'哪裏'那是什麼時候很慢。 –

+0

@TomHart如果'a'表有'a.user_id'字段,並且在數據庫中有更改特權,則可以更改視圖。如果是這種情況搜索更改視圖。 – mikekolas