我在s1_date中创建了一个索引,但是这个查询仍然非常慢(15秒)但是当我删除“按s1_date desc排序”时它会更快(10毫秒)这是查询:
SELECT * FROM `bucket_1` WHERE type = 'type1' AND (batch_number1 like '' OR batch_number2 like '' OR batch_number2 like '' OR batch_number3 like '' OR batch_number4 like '' OR batch_number5 like '') order by s1_date desc limit 10
这是查询的真正噩梦。 s1_date上的索引不会有帮助,因为查询引擎必须在执行任何排序之前首先应用谓词type = 'type1' AND (batch_number1 like '' OR batch_number2 like '' OR batch_number2 like '' OR batch_number3 like '' OR batch_number4 like '' OR batch_number5 like '')
,并且它是将成为大多数工作的谓词。特别是那些OR真的搞砸了索引,这意味着让查询快速运行将成为一个问题。
看看您是否可以用其他方式表示您的数据,这样您就不必使用这些OR。