12/04/18 20:24:15.04
>>650-651
ありがとうございます。
ちなみに、>>649のSQLを走らすと、20分以上掛かります。
USERSが10万件、RECORDSが10万×500世代以上あるからでしょうか。
explain(MySQL) を掛けてみると、USERSは全件ですが
RECORDSはtype=eq_ref, key=PRIMARYとなっていて、何となくindexは使われているような感じです。
653:NAME IS NULL
12/04/18 20:38:00.80
select count(*) from records where gen_no = 100;
の速度を調べてみるとか
usersのカラム数がどれくらいあるのか知らんけど、多いならuser_no latest_gen_noのインデックスはるとか
スワップが発生してないか調べるとか
654:649
12/04/18 22:41:12.40
>>653
>select count(*) from records where gen_no = 100;
一時間半以上掛かりました。
gen_noだけのindexがないので全件になりますね。
USERSテーブルのインデックスについてちょっと考えてみます。
655:NAME IS NULL
12/04/19 13:51:23.18
>>652
同条件で試してみたけど10秒程度で帰ってくるから
チューニングとサーバーのスペックが問題じゃないかな
MySQLスレで聞いた方が良さげ
656:NAME IS NULL
12/04/19 13:57:05.08
それでも10秒ぐらいかかるんだなぁという感想
657:NAME IS NULL
12/04/19 14:45:34.88
>>655
同条件?データのばらつき具合も?
658:NAME IS NULL
12/04/19 16:40:59.66
>>657
同条件は語弊があったね
分かっているスキーマとレコード数だけしか考慮してないよ
659:649
12/04/19 21:32:25.92
>>655
10秒ですか。そのくらいで収まってくれるといいんですが。
チューニングの方向を試してみます。
ありがとうございました。
660:NAME IS NULL
12/04/19 23:12:34.23
どうにも不思議なんでPostgreSQL(8.2 ←古い)で試したら100msぐらいだったよ。
mysqlとそんな差が出るとは思えないけど、参考になれば。
スペックもたいしたことないはず。
CPU pentium dualcore E2180
メモリ 1G
HDD 普通のHDD
あと、これもやっぱりおそい?
select count(r.*) from users u join records r
on (u.user_no=r.user_no and u.latest_gen_no=r.gen_no);
661:NAME IS NULL
12/04/20 15:18:41.24
あれ、1万ユーザでためしてたゴメンゴ
662:NAME IS NULL
12/04/21 00:00:05.61
MySQL5
開始日、終了日を持ったテーブルを日付単位に表示したいです。
tbl_job は、以下の構造です。
id, name, start_date, end_date
---------------------------
1, JOB1, 2012-04-01, 2012-04-03
2, JOB2, 2012-04-02, 2012-04-04
上記テーブルから以下のように日付単位でJOBを表示するSQLを教えてほしいです。
date, id, name
--------------------
2012-04-01, 1, JOB1
2012-04-02, 1, JOB1
2012-04-02, 2, JOB2
2012-04-03, 1, JOB1
2012-04-03, 2, JOB2
2012-04-04, 2, JOB2
663:NAME IS NULL
12/04/21 00:11:40.28
>>662
>>8
664:649
12/04/21 09:56:41.04
あれから my.ini を編集してメモリをたくさん割り当てたり
DB アクセス時に HDD からカコンカコンと心臓に悪い音がしていたので
データファイルを他のドライブに移動したりしてみたら
>>649の SQL が20秒ぐらいで帰ってくるようになりました。
皆さん、どうもありがとうございました。
大変助かりました。
665:NAME IS NULL
12/04/21 10:07:01.22
>HDD からカコンカコンと心臓に悪い音がしていたので
www
666:NAME IS NULL
12/04/24 04:19:16.07 k32ZaufP
SQLite3を使っています。
カラムがなかったらinsert
あったらupdateしたいのですが、
どういうSQLをかけばいいのでしょうか?
insert into t1(c1, c2) values("hoge",10)
update t1 set c2=10 WHERE c1="hoge"
このときc1はuniqueです。
よろしくお願いします。
667:NAME IS NULL
12/04/24 04:26:46.11
insert or replace
668:NAME IS NULL
12/04/24 04:32:45.50
>>667
ありがとうございます!
669:NAME IS NULL
12/04/27 21:20:22.88
厳密にはSQLの質問じゃなんですが・・・
ER図を書くのにいいツールってないですか。
コードと連携する機能はなくていいですが、できればMacで動くのがいいです。
テーブルやカラムにコメントやメモが書けるとうれしい。
670:NAME IS NULL
12/04/27 21:36:46.25
ERwin、ER/Studio、Object Browser ER、、、
フリーならDBDesignerぐらいか?
Macは知らん
671:NAME IS NULL
12/04/28 05:53:13.60
ERMaster使ってるけど
EclipseプラグインだからMacでも動くんじゃね?
672:NAME IS NULL
12/04/28 07:23:30.50
>>671
>ERMaster
これよさそうですね。ありがとうございます。