請問怎么優化子查詢?

willko
請問怎么優化子查詢?

SELECT count(*) AS recommend_total, forum_title_id FROM recommend_title_user_temp WHERE user_id = ANY(SELECT user_id FROM recommend_title_user_temp WHERE forum_title_id = '1710879') AND forum_title_id != '1710879' GROUP by forum_title_id HAVING recommend_total > 0 ORDER BY recommend_total DESC LIMIT 5

*************************** 1. row ***************************
           id: 1
  select_type: PRIMARY
        table: recommend_title_user_temp
         type: range
possible_keys: forum_title_id
          key: forum_title_id
      key_len: 4
          ref: NULL
         rows: 15
        Extra: Using where; Using index; Using temporary; Using filesort
*************************** 2. row ***************************
           id: 2
  select_type: DEPENDENT SUBQUERY
        table: recommend_title_user_temp
         type: eq_ref
possible_keys: forum_title_id,user_id
          key: forum_title_id
      key_len: 8
          ref: const,func
         rows: 1
        Extra: Using where; Using index

請問有沒有辦法優化?
數據量很大的時候性能怎樣?

yueliangdao0608
Use join instead.

willko
關鍵是不能使用鏈接啊
因為同一張表。。而且使用鏈接不能得到結果。。。。。。。。

SELECT * FROM recommend_title_user_temp WHERE user_id = ANY(SELECT user_id FROM recommend_title_user_temp WHERE forum_title_id = '1710879')

willko
上面這個語句還沒有分開查詢效率高
上面的會遍歷整張表。。。

yueliangdao0608
[table=95%][tr][td][font=FixedSys][color=#000000][color=#0000FF]SELECT[/color] a[color=#0000CC].[/color][color=#0000CC]*[/color] [color=#0000FF]FROM[/color] recommend_title_user_temp [color=#0000FF]as[/color] a join [color=#0000CC]([/color][color=#0000FF]SELECT[/color] user_id [color=#0000FF]FROM[/color] recommend_title_user_temp [color=#0000FF]WHERE[/color] forum_title_id [color=#0000CC]=[/color] [color=#FF00FF]'1710879'[/color][color=#0000CC])[/color] [color=#0000FF]as[/color] b on [color=#0000CC]([/color]a[color=#0000CC].[/color]user_id [color=#0000CC]=[/color] b[color=#0000CC].[/color]user_id[color=#0000CC])[/color][/color][/font][/td][/tr][/table]