簡體   English   中英

優化簡單的SQL查詢?

[英]Optimizing simple SQL query?

問候朋友,

在我的MySQL數據庫中,我有“ MAB”表,其中包含有關基因ID(GI_ID)的信息以及其他一些與基因相關的信息。

“ MAB_CAN”表可以包含僅與癌症相關的基因ID(GI_ID)。

我使用以下SQL查詢從MAB表獲取癌症相關信息:

SELECT * FROM MAB WHERE `GI_ID` IN (SELECT `GI ID` FROM `MAB_CAN`)

此查詢大約需要14秒,太長了。(1605條記錄)。

但是以下獨立查詢需要很短的時間。

MAB_CAN WHERE 1中選擇GI_ID

  • 0.0005秒(1,605條記錄)

選擇*從MAB WHERE 1

  • 0.0007秒(31,043條記錄)

優化我的第一個查詢的任何技巧?

嘗試這個

SELECT * FROM MAB
   INNER JOIN MAB_CAN ON MAB.GI_ID = MAB_CAN.GI_ID

然后,您需要查看需要返回的列,您絕對不應真正使用SELECT *,而應返回所需列名稱的不同列表,例如SELECT Col1,Col2,Col3 FROM ...,這樣可以最大程度地減少返回的數據。

正如其他答案表明的那樣,如果查詢仍然很慢,則需要查看在MAB表的GI_ID字段中放置索引。

  1. 用列名替換*
  2. 在GI_ID上創建非聚集索引

您可以從在MAB表的GI_ID列上創建索引開始。

暫無
暫無

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

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