0

基本的にはタイトルにすべてが含まれています。非常に時間がかかるテーブルの更新と結合に基づくクエリがあります。スライスにカットすることはできますが、一度実行することをお勧めします。「読み取りタイムアウト」の制限よりもはるかに長い時間がかかるため、PhpMyAdmin でエラー メッセージが表示されます。一方、サーバー上では、トランザクション (PhpMyAdmin のデータベースのプロセス) がまだ実行中であることがわかります。ここで私の質問があります: czan 私はこの取引を信頼しますか? トランザクションが終了するのを待つ価値はありますか、それともトランザクションを中断してタスクを分解する方法を見つけて、時間がかからないようにするのが賢明ですか? 答えてくれてありがとう。

興味のある方へのクエリを添付します。

insert into `rt_air_rail_5_23` 
( `dNomOri`, `dNomDes`,`dNomConurbOri`, `dNomConurbDes`, 
`dHdep`, `dHarr`, 
`dTemps`, `dTveh`, `dTmap`, 
`dTatt`, `dTatt1`, `dPole`, `dTexte`, `dType`, 
`tpsDispo`, `aType`, 
`aHdep`, `aHarr`, 
`aTemps`, `aTveh`, `aTmap`, 
`aTatt`, `atatt1`, `aPole`, `aTexte`,  `dId`, `aId`,
`dori`, `ddes`, `aori`, `ades`,  `dconurbOri`, `dconurbDes`,`dmodeOri`, `dmodeDes`, `anomOri`, `anomDes`, orix, oriy, desx, desy)
SELECT 
d6.NomOri, d6.NomDes, d6.nomConurbOri, d6.nomConurbDes,
SEC_TO_TIME((d6.`heureo`)*60) dHdep, SEC_TO_TIME((d6.heured)*60) dHarr,     SEC_TO_TIME((d6.temps)*60) dTemps, SEC_TO_TIME((d6.tveh)*60) dTveh, d6.tmap dTmap, d6.tatt dTatt, d6.tatt1 dTatt1, d6.pole dPole, d6.`texte` dTexte, d6.Type dType, 
SEC_TO_TIME((a21.`heureo`-d6.`heured`)*60) tpsDispo, a21.Type aType,
SEC_TO_TIME((a21.`heureo`)*60) aHdep, SEC_TO_TIME((a21.heured)*60) aHarr, SEC_TO_TIME((a21.temps)*60) aTemps, SEC_TO_TIME((a21.tveh)*60) aTveh, a21.tmap aTmap, a21.tatt aTatt, a21.tatt1 atatt1, a21.pole aPole, a21.`texte` aTexte,  d6.id dId,   a21.id aId,
d6.ori, d6.des, a21.ori, a21.des, d6.conurbOri, d6.conurbDes, d6.modeOri, d6.modeDes,a21.NomOri, a21.NomDes, d6.dx, d6.dy, d6.ax, d6.ay
FROM `rt_air_rail_d_5h45` d6
join `rt_air_rail_a_22h15` a21
on 
(
   (
     (d6.type=101  and a21.type=101) and                           #cas fer fer
     (d6.`conurbOri`=a21.`conurbDes` and d6.`conurbDes`=a21.`conurbOri`)
   ) 
or (
    (d6.type=201 and  a21.type=102)  and                      #cas air fer
    (d6.`Ori`=a21.`Des` and d6.`conurbDes`=a21.`conurbOri`)
   ) 
or (
    (d6.type=102  and a21.type=201) and                             #cas fer air
    (d6.`conurbOri`=a21.`conurbDes` and d6.`Des`=a21.`Ori`)
  )
or ( 
     (d6.type=202 and  a21.type=202) and                            #cas air air
     (d6.`Ori`=a21.`Des` and d6.`Des`=a21.`Ori`)
  ) 
)
where d6.`conurbOri` <> d6.`conurbDes` ;
4

2 に答える 2

0

おそらく最もエレガントな方法ではなく、「ユニオン」命令を使用して4つの選択クエリを追加することで、問題を解決しました。これにより、すべてのクエリを 1 つの命令に渡すことができ、「タイムアウト」の問題を回避できました。

于 2014-10-09T12:07:05.940 に答える