我需要简化此查询,因为保存 mysql 的服务器无法在设置的时间限制内执行此操作。
SELECT `B`.*,
`C`.`name`,
DATE_ADD(`B`.`SAILING-DATE`, INTERVAL `B`.`NIGHTS` DAY) AS dataEnd
FROM `table1` AS B
INNER JOIN `table2` AS A
INNER JOIN `table3` AS C
WHERE `B`.`ID`=`A`.`ID`
AND `B`.`CAT`=`A`.`CAT`
AND `C`.`code`=`A`.`code`
AND (`B`.`NIGHTS`>=$aNumber AND `B`.`NIGHTS`<=$anotherNumber)
// where are other AND like this on `table1`
在哪里table1
并且table2
有大约 25.000 行。
我想 suddivide 执行第一个查询的查询table1
,而不是循环所有结果并对每个结果进行一次查询,但我认为效率太低。
有人能帮我吗?谢谢!!!
编辑:
这是解释:
编辑2:
我不能添加索引导致字段ID
,CAT
并且code
在每个表中都不是唯一的.. 在每个表中都有更多具有相同ID
CAT
和code
编辑3:
我认为最好将所有内容划分为更简单的子查询..有人可以给我一个想法吗?谢谢!