问候朋友,
在我的MySQL数据库中,我有'MAB'表,其中包含有关Gene Ids(GI_ID)和其他一些基因相关信息的信息。
'MAB_CAN'表可以包含仅与癌症相关的基因ID(GI_ID)。
我使用以下SQL查询从MAB表中获取癌症相关信息:
SELECT * FROM MAB WHERE `GI_ID` IN (SELECT `GI ID` FROM `MAB_CAN`)
此查询大约需要14秒,这太长了。(1605条记录)。
但以下独立查询需要很短的时间。
SELECT
GI_ID
FROMMAB_CAN
WHERE 1
SELECT * FROM
MAB
WHERE 1
优化我的第一个查询的任何提示?
答案 0 :(得分:3)
试试这个
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)
答案 2 :(得分:1)
您可以从在MAB表中的GI_ID列上创建索引开始。