のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,305人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレMySQL 総合 Part17

    mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - 2004 + - config + - Warning + - 経過時間 + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    601 : NAME IS - 2010/03/22(月) 19:47:57 ID:??? (+4,+11,+0)
    データベース作り直し
    602 : NAME IS - 2010/03/22(月) 22:47:02 ID:??? (+24,+29,-18)
    >>600
    作り直した方が早い

    いや、まあ、それなりの手順で作り直さなくても修正効くんだけど
    説明するの面倒くさいし、タダじゃやってられないし、ね。
    606 : NAME IS - 2010/03/23(火) 11:02:47 ID:??? (-8,-9,-23)
    使うHash関数が、何バイトの文字列を出力するのかを調べて、
    その固定長でいいのでは。
    607 : NAME IS - 2010/03/23(火) 12:50:48 ID:??? (+27,+29,-31)
    経過書き込み。

    phpmyadminでごちゃごちゃいじったら、なんかマシになってきた。
    それにしても、なぜこんなつまづきやすいことを本に書かない。

    技術評論社の、ばか。
    609 : NAME IS - 2010/03/23(火) 22:23:27 ID:??? (+33,+30,-92)
    DB構成表をプロデューサーの人に渡したところ、その人から、
    「設計が完全に完了してからパフォーマンスを考慮して非正規化
    をする事を考えるように」と構成表も見ずに言われたのですが、
    ここで指す「非正規化」とは、何を指すのでしょうか?

    会社に入ったばかりのものであるため、すみません、ここで質問
    させてください。
    お願いします。
    610 : NAME IS - 2010/03/23(火) 22:27:02 ID:??? (+31,+28,-5)
    それはMySQLじゃなくてSQLの一般常識だよ。
    普通にググッた方がいい
    611 : NAME IS - 2010/03/23(火) 22:28:54 ID:??? (+27,+29,-2)
    いやすぐに本を買って読め。
    それじゃあクビ切られるぞ。
    612 : NAME IS - 2010/03/23(火) 22:32:16 ID:??? (+27,+29,-5)
    ここは、なんて親切なインターネッツなんだろう。
    ちょっと感動。
    613 : NAME IS - 2010/03/24(水) 00:14:28 ID:??? (+27,+29,-16)
    そのプロデューサーに聞けばいいんじゃねの?
    中途採用?じゃぁ、がんばれw
    614 : NAME IS - 2010/03/24(水) 00:42:54 ID:??? (+32,+29,-25)
    >>610-613
    まったくもっておっしゃるとおりですね。
    返す言葉が見つかりません。

    しっかりと勉強し、それでもわからないようであれば
    頑張って聞いてみます。

    ありがとうございました。
    615 : 605 - 2010/03/24(水) 07:28:56 ID:??? (+24,+29,+0)
    >>606
    >>608

    返事が遅くなり申し訳ありません。
    どうもありがとうございます!
    616 : NAME IS - 2010/03/24(水) 11:47:40 ID:??? (-27,-30,-87)
    私書箱システムを考えているのですが、どういう風にテーブルを組めばいいかアドバイス頂けませんでしょうか。
    今考えているのが
    id from_id to_id message created

    って形で
    送信元を from_id
    送信先を to_id
    として message にメッセージを入れます。

    ただ、これだとどのメッセージにどのメッセージからの返信なのかというのが
    わからなくなってしまいますよね。
    教えて下さい。よろしくお願いします。
    617 : NAME IS - 2010/03/24(水) 11:59:48 ID:??? (-28,-30,-63)
    要件が良くわからないけど、
    先頭のidが、メッセージのidを示しているのであれば、
    もう一項目追加して、返信先IDを保持するようにすればいいのでは。

    id from_id to_id reply_to message created
    618 : NAME IS - 2010/03/24(水) 12:29:40 ID:??? (+26,+29,-51)
    メッセージとidと作成者、作成日時だけのテーブル作って
    どこへ送信したのかとかどのidのりプライなのかとかは
    別テーブルにした方がいいんじゃ?
    同報の仕組みとかはいらないのかな
    619 : NAME IS - 2010/03/24(水) 12:42:34 ID:??? (-27,-30,-54)
    >>617
    >>618

    ありがとうございます。

    送信情報テーブル
    id from_id to_id created

    メッセージテーブル
    id send_id message created

    こんな感じで行ってみようと思います。
    ありがとうございました!
    620 : NAME IS - 2010/03/24(水) 15:12:55 ID:??? (-1,-30,-74)
    slow.logに記録されているQuery_timeが5のSQL文を実際にmysqlに接続して投げると0.2くらい実行されます。
    これはネットワークやプログラムとの接続部分がボトルネックになっているということでしょうか?

    long-query-time=4で設定しています。
    ご教示お願いいたしますm(_ _)m
    621 : NAME IS - 2010/03/24(水) 15:45:17 ID:??? (+40,+29,-37)
    >>620
    クエリの実行時間であって、結果をお渡しする時間ではないので
    通信部分がボトルネックだった可能性はない。
    622 : NAME IS - 2010/03/24(水) 15:48:10 ID:??? (+25,+29,-36)
    AテーブルとBテーブルがあって、BはAに紐付いているとき
    Aのレコードを削除したら紐ついてたBのレコードも
    いっしょに削除されてほしいんだけど
    こういうのってなんとかナージャでやるんだっけ?
    623 : 620 - 2010/03/24(水) 16:14:06 ID:??? (+37,+29,-53)
    >>621
    ありがとうございます。
    つまり単純にクエリを実行した時間が遅かったってことでしょうか?
    接続してまったく同じクエリを投げてもとても早いのですが、、

    insert文なのでキャッシュされているということはないですし、slow.logがおかしいなんてことがあるのかわからないけどそれしか考え付かないです;;
    625 : NAME IS - 2010/03/24(水) 19:02:51 ID:??? (+22,+29,-2)
    ナージャとは、なんじゃ?
    627 : NAME IS - 2010/03/25(木) 19:06:42 ID:??? (-8,+2,-5)
    >>626
    エンジンを替えたら?
    629 : NAME IS - 2010/03/26(金) 19:31:12 ID:??? (-26,-24,-27)
    アプリケーション側で実装するのが普通なんだが
    630 : NAME IS - 2010/03/26(金) 20:15:02 ID:??? (-16,-9,-1)
    >>628
    MD5でいんじゃね?

    >>629
    えっ。
    631 : NAME IS - 2010/03/27(土) 14:16:07 ID:??? (-19,-30,-167)
    すいません、教えて下さい。

    accessとmysqlをmyodbcを利用して接続していますが、myodbcのバージョンが
    3.5.1.05以外問題が発生するので、未だに変更できません。
    しかし3.5.1.05は4.1以降のmysqlに接続出来ません。

    そこで以下の方策のいずれかはとれるのでしょうか。
    ・myodbc3.5.1.05で4.1以降のmysqlに接続する
    ・複数のmyodbcをインストールする

    ちなみに今までの経験上、3.5.1.05以外では一部文字化けがあったり、
    date_format関数の結果がおかしくなったりします。3.5.1.27では、adoの
    レコードセットを開いて更新するとaccessが異常終了します。

    よろしくお願いします。


    633 : NAME IS - 2010/03/27(土) 20:50:25 ID:??? (-29,-30,-43)
    テーブルのうち空き番号があれば、その番号を取得し存在しない場合には、
    テーブル内の最大番号+1を返すクエリはどうすれば良いでしょうか?


    例)

    TEST_TABLE

    ID




    この場合 → 4 を取得


    ID



    この場合 → 2 を取得


    634 : NAME IS - 2010/03/27(土) 21:19:06 ID:??? (-27,-29,-7)
    抜く時にAUTOINCREMENT値を変更しとけば?
    635 : NAME IS - 2010/03/27(土) 21:52:28 ID:??? (+17,+22,-17)
    >>634
    ???
    よくわからないのでSQLで一発で抽出する方法をお教え下さい。
    637 : NAME IS - 2010/03/27(土) 22:52:52 ID:??? (-25,-30,-53)
    間違えた
    SELECT
    IF (MAX(SAB1.id) = hantei,MAX(SAB1.id)+1 ,MAX(hantei))
    FROM
    (SELECT
    A.id,
    MAX((SELECT COUNT(B.id) FROM test B WHERE A.id >= B.id)) AS hantei
    FROM test A
    GROUP BY A.id ) AS SAB1
    638 : NAME IS - 2010/03/27(土) 23:38:43 ID:??? (+0,+5,+2)
    >>637
    ありがとうございました。
    639 : NAME IS - 2010/03/28(日) 06:19:22 ID:??? (+12,-30,-168)
    MySQLは5.1xを使っているのですがトランザクション処理がうまくいきません。

    SET AUTOCOMMIT = 0;
    BEGIN;
    DROP TABLE TEST;
    ROLLBACK;
    SET AUTOCOMMIT = 1;

    というSQLなのですが、DROPされてしまいます。

    SET AUTOCOMMIT = 0;
    SHOW VARIABLES LIKE 'AUTOCOMMIT%';
    としたところAUTOCOMMITはONのままです。

    開始の手順がおかしいのかと思い、
    PHPのPDOから専用のbeginTransaction() rollBack() 関数を使って実行しましたが結果は同じです。
    借りているレンタルサーバでも同じ状況になることを確認したのですが、
    SQLがおかしいのでしょうか?
    それとも何か設定が悪いのでしょうか?
    どなたかお助けお願いします。
    640 : NAME IS - 2010/03/28(日) 07:05:47 ID:??? (+27,+29,-20)
    DROPって暗黙のコミットではなかったっけ?
    641 : NAME IS - 2010/03/28(日) 09:03:02 ID:??? (-27,-30,-65)
    TRUNCATEもROLLBACKできないから、
    DROPもROLLBACKできなくて不思議はないと思う。

    他のクエリはちゃんとROLLBACK出来ているという前提であれば、
    DROPはROLLBACKできないということであっていると思う。
    642 : NAME IS - 2010/03/28(日) 11:07:53 ID:??? (+22,+29,+0)
    そんなん当たり前やろ・・・。
    644 : 639 - 2010/03/28(日) 15:15:48 ID:??? (-27,-30,+0)
    レス遅くなってすみません。
    調べたところINSERT文でロールバックの説明をしているサイトがあったので、
    おそらくINSERT文なら正常ならロールバックできると思い(あまりDB詳しくないので断定ですみません)、
    DROPの代わりにINSERT文でやってみましたが結果は同じになりました。

    PHPの話題はスレ違いになりますが一応コード出しときます。(エラー処理・例外処理などは省いてます)

    PHPのmysql関数を使ってやる場合
    $m = mysql_connect("localhost", "username", "password");
    mysql_select_db("TEST_TABLE");
    mysql_query("SET AUTOCOMMIT = 0");
    mysql_query("BEGIN");
    mysql_query("INSERT INTO TEST (NAME) VALUES ('HOGE')");
    mysql_query("ROLLBACK");
    mysql_query("SET AUTOCOMMIT = 1");
    mysql_close($m);

    PHPのPDOクラスを使った場合は、
    $pdo = new PDO("mysql:dbname=TEST_TABLE;host=localhost;", "username", "password");
    $pdo->beginTransaction();
    $pdo->query("INSERT INTO TEST (NAME) VALUES ('HOGE')");
    $pdo->rollBack();
    $pdo = null;

    どちらともコミットされてHOGEが登録されてしまいます。
    PHP側に問題があるのかDB側に問題があるのかわからないのですがPHPスレで聞いたほうがいいでしょうか?
    647 : NAME IS - 2010/03/28(日) 15:54:45 ID:??? (-26,-29,-7)
    TESTテーブルをMyISAMで作ってるんだろうね
    InnoDBで作り直そう
    649 : 639 - 2010/03/28(日) 16:15:25 ID:??? (+24,+29,-36)
    >>647
    どうもありがとうございます。
    ストレージエンジンで色々変わるのですね。
    早速作り方を調べて試してみたいと思います。
    650 : NAME IS - 2010/03/28(日) 16:17:12 ID:??? (+27,+29,-10)
    MySQLはトランザクションがない
    そんな風に考えていた時期が俺にもありました(AA略
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - 2004 + - config + - Warning + - 経過時間 + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について