mySQL索引和准备状态

mySQL索引和准备状态,mysql,optimization,indexing,Mysql,Optimization,Indexing,我得到一个复杂的问题: SELECT * FROM ( SELECT Transaction FROM table1 WHERE Transaction IN (SELECT Transaction FROM table2 WHERE Plugin='XXX' AND Server='XXX') AND Transaction NOT IN (SELECT Transaction FROM table1 WHERE Detail IN ('Monitor','Version','mo

我得到一个复杂的问题:

SELECT * FROM 
(
SELECT Transaction 
FROM table1 
WHERE 
Transaction IN (SELECT Transaction FROM table2 WHERE Plugin='XXX' AND Server='XXX') 
AND 
Transaction NOT IN (SELECT Transaction FROM table1 WHERE Detail IN ('Monitor','Version','monitor','version')) 
ORDER BY Date DESC, Millisecond DESC LIMIT 10) 
AS res
我在表1:Detail上获得索引,“事务”是表2的主键

数据库返回结果需要一段时间(5-10秒)。因此,我在表2上创建了另一个索引:Plugin,现在查询是快速的,但是会显示一个准备状态,并且需要5-10秒。因此,在我创建了一个新索引之后,时间根本不会改变


有人能告诉我发生了什么,我如何优化这个查询吗?谢谢大家!

您不能简单地将查询重写如下:

SELECT  a.Transaction 
  FROM  table1 a
    INNER JOIN table2 b ON b.Transaction = a.Transaction
  WHERE (b.Plugin='XXX' AND b.Server='XXX')
        AND a.Detail NOT IN ('Monitor','Version','monitor','version')
ORDER BY a.Date DESC, a.Millisecond DESC LIMIT 10
因此,您可以加入
表2
(这将更快)并删除所有子查询


这应该要快得多。

实际上我之前想的是,如果我在加入之前选择,速度会更快,对吗?