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

    私的良スレ書庫

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

    元スレMySQL 総合 Part14

    mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - 1 + - mysqldump + - rXBUq5sa + - share + - utf8_bin + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    101 : 田中さん - 2008/07/06(日) 19:33:52 ID:pcnIKAGY (+24,+29,-8)
    エヴァンゲリオンにあわせた曲(バンプのアルエ)みたいな曲ないですか
    103 : NAME IS - 2008/07/07(月) 15:58:45 ID:??? (-27,-30,-80)
    2つのテーブルからマッチする値をとる際、1テーブル(one)のidの値とマッチしないid番号のみ2テーブル(two)からマッチするかチェックさせたいのですがどのようにできるでしょうか?

    select * from one where id like '%hoge%'
    これでマッチしない値
    select * from one_option sub_id like '%hoge%'

    できれば1文で結合したいです。
    お願いいたします。
    106 : NAME IS - 2008/07/08(火) 21:31:35 ID:??? (+27,+29,-30)
    なぜかrootの権限消失してしまって、何度インスコしなおしても戻らん。
    OSから入れなおしか?
    107 : NAME IS - 2008/07/08(火) 21:36:01 ID:??? (+27,+29,-11)
    何言っているの?定義ファイルが壊れているだけだろ。何回インストールしてもだめだろ。
    109 : NAME IS - 2008/07/08(火) 22:04:35 ID:??? (+22,+29,+1)
    色々と意味不明。エスパー頼む
    115 : NAME IS - 2008/07/09(水) 17:10:18 ID:??? (+9,+29,-23)
    >>114
    判断に必要な情報が足りていない。

    【クライアントが入力したデータ】とやらの性質が分からない限りなんともいえない。
    117 : NAME IS - 2008/07/09(水) 18:06:12 ID:??? (+26,+29,-18)
    パフォーマンス考えれば、ちまちま容量増やすわけ無いじゃんw
    119 : 108 - 2008/07/09(水) 21:55:11 ID:1CS4UrgO (-19,+29,-33)
    >>118

    すげー親切にありがとう。テーブルサイズの変更っていうか
    テーブル自体削除したりしても、idbdata1のサイズが変わらん
    から、???だった。

    初心者でなんもわからんくてすまん。ドキュメント読んでくるわ
    123 : NAME IS - 2008/07/11(金) 01:14:23 ID:??? (+24,+29,-102)
    >>120
    すべてについて常識の範囲内で想定するとしてだ。
    単純に、コスト(金と手間)とセキュリティリスクの見合いになると思うなぁ。

    最大でも数万レコード程度にしかならず、
    かつ何らかの操作ミス等で漏洩しても許容できるような内容なら
    統合しといたほうがいいと思う。

    このレベルを超えるなら、こんな所で聞いてないで信頼できるベンダーに外注しなさい。
    124 : 120 - 2008/07/11(金) 13:09:27 ID:TCuAt9gA (-3,-4,+1)
    >>123
    レスありがとうございます
    125 : NAME IS - 2008/07/11(金) 17:07:46 ID:??? (+25,+29,-102)
    >>120
    顧客の個人情報が含むなら、万全の対策をすべきだな。
    漏出すると会社が潰れかねない。

    例えば、等身大ラブドール販売会社ドールスコートはwinnyで顧客情報を流出させた。
    http://sakura02.bbspink.com/test/read.cgi/adultgoods/1142163387/26-125

    それが致命傷になり現在ではこんなことになっている。
    http://doll.surpara.com/
    126 : NAME IS - 2008/07/13(日) 14:37:50 ID:??? (+22,+24,-5)
    5.1.26出たけどまだRCなのか
    最初に出すって言ってからもうすぐ1年だよ
    いつGAになるんだ
    127 : NAME IS - 2008/07/13(日) 15:05:50 ID:nXfDUouf (+22,+27,-21)
    インデックスの名前空間ってテーブル名と一緒だっけ?テーブル毎?
    128 : NAME IS - 2008/07/15(火) 14:13:35 ID:??? (+0,+0,+0)
    URLをストアドファンクションでインサートしているんですが問題が発生しています。
    以下のストアドなんですが、
    http://example.com/hogehogeからアクセスがあった場合、
    http://example.com/
    http://example.com/hogehoge
    の二つをカウントアップしているようです。

    http://example.com/hogehogeのみカウントアップさせたいのですがなにが間違っているのでしょうか?

    CREATE FUNCTION f_logging_referer(
     f_page_id INT,
    f_url TEXT,
    f_device VARCHAR(100)
    ) RETURNS INT
    BEGIN
    declare _uid INT DEFAULT 0;

    select url_id into _uid from t_url where str_url = f_url;
    if _uid < 1 then
    return 0;
    end if;
    -- 最後のアクセス更新 (同じページIDが存在したらUPDATE)
    insert into t_url_lastlog(`page_id`,`str_url`,`str_device`) values (`f_page_id`,`f_url`,`f_device`)
    on duplicate key update `str_url` = `f_url`,`str_device` = `f_device`;
    // URLをカウントアップ
    select 1 into cnt from t_url_count where str_url = f_url and page_id = f_page_id;
    if cnt = 1 then
    update t_url_count set `num_count` = num_count+1 where `num_refmonth_id` = `s_rnid`;
    else
    insert into t_url_count(page_id,str_url,num_count) values(f_page_id,f_url,1);
    END iF;
    return 1;
    END;
    130 : NAME IS - 2008/07/16(水) 19:32:49 ID:??? (+33,+30,-257)
    ごくごく単純に言って、
    マスタには書き込んだ分の読み取りが発生するので、読み取り量が1.5倍になる。読み取りを均等に分散させるとして、1:2のまま。
    スレーブには書き込んだ分の書き込みが発生するので、読み取りを均等に分散させるとして、1:1になる。

    ところで、そもそも君は何故レプリケーションする必要に迫られているか?

    パフォーマンスの問題を解決したいなら、オーバーヘッド分を犠牲にしてでもレプリケーションするべきだろう。
    フェイルオーバーしたいなら、オーバーヘッド分を犠牲にしてでもレプリケーションするべきだろう。

    つまり君には、レプリケーションのオーバーヘッドに関わらず、
    もはやレプリケーションする道しか残されていないのです。

    ただ、単純なレプリケーションでは更新の分散はできないので、1:2なんつー状況で打てる手は少ないと思う。
    マスタの分割をセットで考えたほうがいいだろう。
    131 : NAME IS - 2008/07/16(水) 20:27:36 ID:??? (-22,-23,-48)
    5.1はいつGAになるんですか?
    Sunに買収されたんだしロードマップくらい用意して欲しいです。

    そろそろ出るって言われ続けて相当引っ張ったWindows NT 5.0
    (Windows 2000)を思い出します。10年位前の話。
    132 : NAME IS - 2008/07/16(水) 22:16:10 ID:??? (-10,-8,-16)
    春のカンファレンスで2008Q1って言ってたんだよね
    出ませんでしたが。

    仕事に影響あるので困る。
    134 : NAME IS - 2008/07/17(木) 23:53:25 ID:5bq+nAdm (+28,+29,-57)
    データ抽出の開始行の40000番目のレコードを見つけるのに時間がかかってるんじゃない?
    開始行の番号が小さいうちは気にならないけど、番号が大きくなるとそれだけHDDの走査対象が増えるからだと思います。
    135 : NAME IS - 2008/07/18(金) 00:35:23 ID:??? (-24,-30,-48)
    >>131
    http://lists.mysql.com/announce/537
    MySQL 5.1.26-rc is slated to be the last release candidate before we
    declare MySQL 5.1 as "production ready" (GA).

    …だそうです。

    その後のお願いメール。
    http://lists.mysql.com/announce/539
    136 : NAME IS - 2008/07/18(金) 00:39:39 ID:??? (+27,+29,-51)
    >>133
    ORDER BYを指定しないと戻り値のソート順は不定じゃないの?
    フルスキャンするのにテンポラリが作られてたりして。
    インデックス付きのカラムを指定してみてはいかがだろうか。
    インデックススキャンで済めば、そんなにかからないだろ。
    137 : 133 - 2008/07/19(土) 12:34:09 ID:??? (+37,+29,-173)
    133です。

    >>134

    言われる通りっぽいです。
    根拠はありませんが、何も指定しない状態でレコードを抽出すると
    その行までのデータをシークしていく様子ですね。

    >>136

    LIMITで指定せずにORDER BYでインデックス付きのカラムから指定したら
    正常に取り出せました。
    ありがとうございます!

    ソートしていたら、基地外なほど応答がなかったのでソート外したんです。
    すると、やや速度は上がったのですが今回のようになりました。
    取り出される結果自体は、多分データベースに追加した順番でしたので
    全部を参照するだけであれば問題ないはずだったのですが
    やはりインデックス付きのid用カラムを使用するべきですよね。

    はじめからidを振っていなかったので400,000件のデータに追加できずに
    データ初期化する事になりましたが、解決できました。
    ありがとうございました。
    141 : NAME IS - 2008/07/21(月) 18:36:43 ID:A9N+vOIY (+0,+0,+0)
    質問させて下さい。
    MySQL5.0.51a、Linuxを使用しています。

    以下のような場合に
    `i_img_no` `i_img_disp`
    を取得したいと思っています。
    取得条件は各`i_img_cat_no`の中から一番、数値の低いi_img_dispを持つ`i_img_no`と`i_img_disp`を取得と言った具合です。
    CREATE TABLE `i_img` (
    `i_img_no` int(10) unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'No',
    `i_img_cat_no` int(4) unsigned NOT NULL default '0' COMMENT '画像カテゴリNO',
    `i_img_name` varchar(32) NOT NULL default '' COMMENT '画像名',
    `i_img_url` varchar(255) UNIQUE NOT NULL default '' COMMENT '画像URL',
    `i_img_disp` int(10) unsigned NOT NULL default '0' COMMENT '表示回数',
    `i_img_up_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新日時',
    `i_img_reg_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '登録日時',
    `i_img_del_flg` TINYINT NOT NULL DEFAULT '0' COMMENT '削除フラグ 0=未削除 1=論理削除 2=一時削除'
    ) ENGINE = innodb CHARACTER SET ujis COLLATE ujis_japanese_ci COMMENT '画像表示情報';

    i_img ( 他のカラムは長いので省略 )
    ---------------------------
    i_img_no i_img_cat_no i_img_disp
    1     1       3
    2     1       10
    3     1       20
    4     2       10
    5     2       30
    ....
    x     2       5
    ---------------------------

    上記であれば、以下の結果を取得したいのです。
    ---------------------------
    i_img_no i_img_cat_no i_img_disp
    3     1       20
    5     2       30
    ---------------------------
    ドキュメント等を見て
    SELECT
    MAX(`i_img_disp`),
    `i_img_no`
    FROM
    `i_img`
    WHERE
    `i_img_del_flg` = 0
    GROUP BY `i_img_cat_no`

    としてみたのですが、これではMAX(`i_img_disp`)時の`i_img_no`を取得してくれず
    二つのカラムの関係が非同期になってしまいます。

    何か上手くいく方法はないものかと、
    GROUP BY `i_img_cat_no`
    ORDER BY MAX(`i_img_disp`) ASC

    GROUP BY `i_img_cat_no`
    ORDER BY MAX(COUNT(`i_img_disp`)) ASC

    SELECT MAX(`i_img_disp`, `i_img_no`)
    等も試してみたのですが、構文エラーや思った結果が得られず行き詰まっております。
    どうかお力添え頂けないでしょうか。
    宜しくお願い致します。
    142 : NAME IS - 2008/07/22(火) 02:43:47 ID:??? (-21,-30,-76)
    副問い合わせの基本パターンだ。

    select i_img_no, i_img_cat_no, i_img_disp
    from i_img img1
    where i_img_disp =
    (
    select max(i_img_disp)
    from i_img img2
    where img1.i_img_cat_no = img2.i_img_cat_no
    );

    がんばって覚えてね
    143 : 141 - 2008/07/22(火) 03:05:50 ID:??? (+24,+29,-18)
    >>142
    レス有り難う御座います。
    早速試しながら調べてみます。
    144 : NAME IS - 2008/07/22(火) 09:10:15 ID:??? (-27,-30,-63)
    >>141
    >としてみたのですが、これではMAX(`i_img_disp`)時の`i_img_no`を取得してくれず

    それより、その select は普通のSQLではエラーになるので、御注意。
    普通の SQL では、group by があるときは、group by の対象フィールドか、集計関数の結果しか select できないので。
    145 : NAME IS - 2008/07/22(火) 18:08:14 ID:??? (-16,-29,-148)
    23k程度のファイルの内容(文字列)をTEXT型のカラムに保存しようとしています。(UTF-8)
    ですが、INSERTすると途中までしか入りません。
    UTF-8なので3byteになる文字があるとはいえ、
    TEXTの上限である約65kに収まらない理由がピンと来ません。
    厳密には内容によって変わると思いますが
    23kのファイルがTEXT型には収まらない可能性はある、といった経験則のある方いらっしゃいますか?

    また、収まらないのであればmediumtextかと思ってるのですが、上限がかなり大きいです。
    MySQLでデータ型を決めるとき、大容量のデータ型のカラムを確保しておくだけでロスが生じる、
    ということはないと考えて大丈夫でしょうか?
    プログラムでINTかLONGかで確保するメモリが違うというような意味合いなんですが・・・
    146 : NAME IS - 2008/07/22(火) 20:16:14 ID:??? (-28,-29,-58)
    んとね、MySQLでは照合順序がUTF8のときは、全ての文字が3byteになるの。
    よって、入らないというのが正解で、正常す。

    大容量のデータ型だと、確かInnoDBでは超無駄になったと思う。

    フルテキストインデックス使わないならTEXT型のメリットって知れてるし、
    バイナリとして格納しちゃえば?
    147 : NAME IS - 2008/07/22(火) 20:54:20 ID:??? (+29,+29,-70)
    >>135
    おー、やっとか!
    せめていつGAになるかがもっと早く分かってれば来年春に稼動予定のシステムで
    5.1を採用したんだけどなぁ。結局5.0で進めることに先月決定した。

    お願いメールも見たよ。鶏か卵かみたいな話になるけど、GAって名前にならないと
    ユーザーは増えないと思う。
    149 : NAME IS - 2008/07/23(水) 11:09:43 ID:SYdki5t2 (+29,+29,-108)
    質問させていただきます
    SQLで既存のテーブルに新しくフィールドを追加しました。
    最初はnullなのでそこにデータを入れたいのですが、ファイルから一度に出力させることは出来ないでしょうか?
    わかりにくくてすいませんが
    他のフィールドにはすでにデータが入っていて、新しいフィールドにはなにもない状況。
    新しいフィールドに入れるデータはテキスト形式であるので、
    load data infile,,,,としたいのですが、特定のフィールドのみにテキストからデータを挿入するやり方がわからずに質問させていただきました
    150 : NAME IS - 2008/07/23(水) 11:24:09 ID:??? (+38,+29,-63)


    テキストを整形して
    新しいフィールドだけをUPDATEするSQLの塊を作って流し込めばいいじゃない。
    もしくは、運用中でなければ
    別テーブルに全部流し込んでおいて、
    現行テーブルを削除→別テーブルをリネームで、そっくり入れ換えるとか。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - 1 + - mysqldump + - rXBUq5sa + - share + - utf8_bin + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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