このクエリを単純化する必要があるのは、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`
約 25.000 行ありますtable1
。table2
table1
すべての結果をループしてすべての結果に対して単一のクエリを作成するよりも、 で最初のクエリを実行するクエリを分割することを考えましたが、効率が悪いと思います。
誰かが私を助けることができますか?ありがとう!!!
編集:
これは説明です:
EDIT2:
I CAN'T ADD INDEX CAUSE THE FIELDID
でCAT
ありcode
、すべてのテーブルで一意ではありません..それぞれに、同じID
CAT
およびcode
EDIT3:
すべてをより単純なサブクエリに分割する方が良いと思います..誰かが私にアイデアをくれますか? ありがとう!