SQL質疑応答スレ 12問目at DB
SQL質疑応答スレ 12問目 - 暇つぶし2ch652:649
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
これよさそうですね。ありがとうございます。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch