簡體   English   中英

MySql:如何減少此查詢的執行時間?

[英]MySql: How to reduce execution time of this Query?

如何自定義此查詢,大約需要30秒才能取出結果,“視頻”表中的總記錄約為50萬,“會員”表中存在300萬成員,是否有其他查詢或是否應該中斷此查詢在2選擇查詢?

user_id被索引vid_id被索引

select a.ref_url , a.source , a.video_name , a.viewers , b.username ,           
c.points from 
members_videos a 
inner join Members b on a.user_id = b.user_id
inner join rankings      c on c.user_id = b.user_id

where a.cat_ids in (123,234,52,234,423,122) not in (110,99)
order by a.vid_id Desc limit 10 

有多個因素:

  1. 確保members_videos,Members和排名在user_id列上具有索引。
  2. 中斷查詢; 消除Order By子句。 獲取臨時表中的數據。
  3. 從臨時表中選擇數據,然后在此處放置“按子句排序”。

或者,嘗試子查詢。

SELECT *
FROM
(
select a.ref_url , a.source , a.video_name , a.viewers , b.username ,           
c.points from 
members_videos a 
inner join Members b on a.user_id = b.user_id
inner join rankings      c on c.user_id = b.user_id
where a.cat_ids in (123,234,52,234,423,122) not in (110,99)
) as T
order by T.vid_id Desc limit 10 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM