mysql:3147
From: 競馬王 <競馬王 <jra_hunter@xxxxxxxxxx>>
Date: Sun, 04 Feb 2001 16:05:36 +0900
Subject: [mysql 03147] Re: ソート結果の順位を一つのカラムに取り込みたいのですが
遠藤さん、どうもです。 早速有り難うございます。 できました。こうするんですね。 とりあえず、Table2 ではなくQuery1 の方に直接代入してしまいましたが。(^_^; (結局同じテーブルに戻さないといけないので。) ただ、気になったのは実行スピードです。 固定長テキストをINSERTするのは0.7秒で完了するのに、 この処理で5〜6秒かかります。 簡単に説明いたしますと、この処理で騎手、調教師のリーディング順位 を出したいわけで、着順回数(1,2,3,4着以下・各3桁の合計12桁)でソートしています。 本年総合順位 前年総合順位 本年地域別順位 前年地域別順位 本年平地順位 前年平地順位 本年障害順位 前年障害順位 と、合計8回繰り返します。 平均で1項目あたり平均5秒としますと40秒かかります。 ちょっと!ですね。 何とか効率よくする方法はないでしょうか。 気になるのは > 12.5.8 UPDATE クエリの速度 > Also, another way to get fast updates is to delay updates and then do many updates in a row later. > 一文で多くの更新を行えば、もしテーブルがロックされていれば、一文で一個づつ更新するよりも、とても速くなります。 です。 INSERT では INSERT INTO test_table VALUES ('a'),('b'),('c').... とすることができるとつい先日教えていただいて、0.7秒まで縮めることができましたので 同じようなことができればかなり速くなるのでは?と思いまして.... ですが、構文が解りませんでした。 単純に、UPDATE test_table SET ('a=a'),('a=b'),('a=c')..... では怒られてしまいました。 それと、集計して気づいたのですが、この方法だと 前年平地成績 前年平地順位 (着順回数です) : : : : 000000000001 500 000000000001 501 000000000001 502 000000000001 503 000000000001 504 000000000000 505 000000000000 506 000000000000 507 となってしまいますが、通常の順位付けと同じく 500 500 500 500 500 501 501 としたいわけです。 以前の私の質問はこのことを全く考慮されていないものでした。 失礼をお詫びして、再度お知恵を拝借したいと思います。 -- 競馬王 <jra_hunter@xxxxxxxxxx>
3137 2001-02-03 16:59 [競馬王 <jra_hunter@x] ソート結果の順位を一つのカラムに取り込みたいのですが 3140 2001-02-03 18:15 ┗[とみたまさひろ <tomm] 3144 2001-02-04 05:30 ┗[競馬王 <jra_hunter@x] 3145 2001-02-04 06:07 ┗[<endo_t@xxxxxxxxxx> ] -> 3147 2001-02-04 16:05 ┗[競馬王 <jra_hunter@x] 3148 2001-02-04 21:50 ┣[競馬王 <jra_hunter@x] 3149 2001-02-04 23:46 ┗[<endo_t@xxxxxxxxxx> ] 3150 2001-02-05 00:22 ┗[競馬王 <jra_hunter@x] 3151 2001-02-05 00:31 ┗[<endo_t@xxxxxxxxxx> ] 3153 2001-02-05 01:10 ┗[競馬王 <jra_hunter@x]