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

    私的良スレ書庫

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

    元スレMySQL 総合 Part15

    mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - insertall + - mregexp + - SSD + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    202 : うんこ - 2009/01/07(水) 11:48:53 ID:SjBm8/3o (-13,+29,-84)
    一つのテーブルに100万レコード入れました。カラムは10。
    セレクトは俊足でさすがmysqlと言えますがinsertが遅すぎます。

    PHPのループでレコード内容を自動作成して流し込んだのですが
    100万入れるのに数時間かかりました。
    (PHPのループを止めてからが長い)

    このまま1000万レコードを超えたいのですが
    もっと高速に入れる方法ないですか?

    先にPHPループでtextデータを作って逆ダンプで入れると早いですか?
    203 : NAME IS - 2009/01/07(水) 12:21:48 ID:??? (-7,-30,-31)
    >>202
    複数行INSERTする構文があるからそれで100行ずつ入れてみて。

    INSERT INTO tbl_name (a,b,c)
    VALUES(1,2,3),(4,5,6),(7,8,9);
    204 : NAME IS - 2009/01/07(水) 12:23:41 ID:??? (-1,-29,-11)
    あとInnoDBだったらautocommitはOFFにして、
    1万行ごとにCOMMITして。
    205 : NAME IS - 2009/01/07(水) 13:58:36 ID:??? (-1,-29,-22)
    MySQLに限らず、大量にINSERTするときはトランザクションにしたほうが速い。
    206 : NAME IS - 2009/01/07(水) 16:22:56 ID:??? (+57,+29,-24)
    トランクザションが早いと言うより、同時に行われるロック処理のおかげもある希ガス
    ソースは俺
    208 : NAME IS - 2009/01/07(水) 16:39:16 ID:??? (-11,-29,-2)
    >>207
    NOT NULLならデフォルトが空文字列になるはず
    209 : NAME IS - 2009/01/07(水) 16:49:55 ID:??? (-11,-29,-12)
    default <value>
    210 : NAME IS - 2009/01/07(水) 17:11:44 ID:??? (+62,-30,-95)
    ご教示お願いします!
    カラムにカンマ割データが入っております。

    id:val
    1:1,2,3,12,211
    2:3,2,11,212
    3:2,4,111,331

    valの中にカンマ割で入れられているデータの中の
    任意数値を検索したいのですが

    LIKE %11%で検索すると id 1.2.3全部マッチしてしまいます。
    こういう場合、どう検索して良いのか教えてください。

    REGEXPという手法を使うのでしょうか。
    宜しくお願いします。
    211 : NAME IS - 2009/01/07(水) 17:33:22 ID:??? (+7,-29,-5)
    11だけにしたかったら%,11,% でよくね?
    212 : NAME IS - 2009/01/07(水) 17:43:11 ID:??? (+68,+29,-47)
    >>211
    レスありがとうございます
    この「11」は仮の数字です、すいません・・
    その場合だと、先頭に入っていた場合、
    最終に入ってた場合にマッチされないので悩んでいます。
    213 : NAME IS - 2009/01/07(水) 22:00:28 ID:??? (+3,-30,-33)
    いずれ使えるから、正規表現は学んでおいた方がいい。
    今回の場合は

    REGEXP "(^11|,11,|11$)"
    214 : NAME IS - 2009/01/07(水) 22:17:48 ID:??? (+80,+29,-26)
    >>212
    前方なら11,% 後方なら%,11 これらをorでつなげばよくね そういう応用力ないと生きていけないよ
    215 : NAME IS - 2009/01/08(木) 12:39:41 ID:??? (+60,+29,-1)
    >>210のテーブル自体が良くない気が
    216 : NAME IS - 2009/01/08(木) 12:51:17 ID:??? (+52,+29,-2)
    まあそれはその通りだな
    217 : NAME IS - 2009/01/09(金) 12:24:44 ID:??? (+71,+29,-74)
    おい、おまえらは何のデータベース作ってんだ?
    入れる内容が無いんだが
    ネットで拾えるデータベースに流用できるエクセルのファイルとか教えろや
    郵便番号とか誰でもつくってそうなつまんねーもんつくりたくねーから
    おもしろいの教えれ
    218 : NAME IS - 2009/01/09(金) 12:33:30 ID:??? (+48,+25,-3)
    株のデータなんかいいんじゃない?
    219 : NAME IS - 2009/01/09(金) 13:24:59 ID:??? (+61,+29,+0)
    >>217
    http://kazina.com/dummy/
    これでも入れとけ
    220 : NAME IS - 2009/01/09(金) 13:39:06 ID:??? (+19,-30,-82)
    >>215
    ん、そういった場合 IDで紐付けして別テーブルに
    id:x_id:val
    1:1:1
    2:1:2
    3:1:3
    4:1:12
    5:1:211
    6:2:3
    7:2:2
    8:2:11
    9:2:212
    こういう感じで入れテクって事かな?

    221 : 210 - 2009/01/09(金) 13:43:16 ID:??? (+64,+29,-1)
    >>213
    ありがとございます。
    >>214
    それだと 1 の時にまずい事になるのです。
    222 : 210 - 2009/01/09(金) 13:49:47 ID:??? (+23,-4,-34)
    追記 213さんのも 前方^スタートと 
    最終適応の$のみなので、121の検索で当たっちゃう予感。
    やはり カンマ割りで入れるのが間違いなのかな?
    223 : 210 - 2009/01/09(金) 13:59:13 ID:??? (+3,-29,-63)
    やりたかった事書きます。

    フォームからのチェックボックス値を保存しておきたかったのです。
    radioとは違い複数あるためどうしようか考えていました。

    PHPで行っているのですが、フォームから来た 配列をそのまま implode( ',', 配列) として入れちゃえ
    んで、読み出したら explodeだと、安易に考えてました。

    出来たのは良いけど、検索できない・・と こんな状況であります。
    アドバイスお願いします。
    224 : NAME IS - 2009/01/09(金) 14:56:55 ID:??? (+55,+27,-5)
    インサートするときダブルクオートでくくっておくとかじゃダメ?
    225 : NAME IS - 2009/01/09(金) 15:21:28 ID:??? (+0,-29,-4)
    REGEXP "(^11,|,11,|,11$|^11$)"
    これでどうだ
    226 : NAME IS - 2009/01/09(金) 16:04:18 ID:??? (+57,+23,+0)
    >>214
    これはひどい
    227 : 210 - 2009/01/09(金) 16:46:03 ID:??? (+2,-30,-32)
    >>225
    きたっ キタキターッ
    いけました! REGREPすごいな 勉強します。
    11と1の複合を探したいときは こんな感じでいいのですね

    ((REGEXP "(^11,|,11,|,11$|^11$)")AND(REGEXP "(^1,|,1,|,1$|^1$)" ))

    ありがとうございましたっ!
    228 : 210 - 2009/01/09(金) 17:04:26 ID:??? (+7,-30,-23)
    WHERE `val`
    REGEXP '(^11,|,11,|,11$|^11$)'
    AND `val`
    REGEXP '(^1,|,1,|,1$|^1$)'

    こうでした。 ありがとうございました
    229 : NAME IS - 2009/01/09(金) 20:46:21 ID:??? (+55,+29,+0)
    >>220
    そっちの方がいいね
    230 : NAME IS - 2009/01/10(土) 00:47:27 ID:??? (-2,-30,-11)
    ',' . implode( ',', 配列) . ','
    として
    %,11,%
    で検索するのはどうか
    231 : NAME IS - 2009/01/10(土) 01:56:06 ID:??? (+58,+29,-6)
    >>228
    これ、データの件数増えたら物凄く重そうだな・・・
    232 : NAME IS - 2009/01/10(土) 03:53:18 ID:??? (-11,-29,-1)
    1{1,2}
    233 : NAME IS - 2009/01/10(土) 08:12:42 ID:??? (+50,+27,+0)
    それ、1111… にもマッチするが。
    234 : NAME IS - 2009/01/10(土) 08:16:50 ID:??? (-1,-29,-22)
    http://www.irori.org/tool/mregexp.html は速いし便利。
    create function する権限が要るけど。
    236 : NAME IS - 2009/01/10(土) 15:00:28 ID:??? (-1,-29,-5)
    東京区内レコードを800万個、横浜レコードを300万個インサート。
    237 : NAME IS - 2009/01/10(土) 18:29:43 ID:??? (+45,+27,+0)
    238 : NAME IS - 2009/01/10(土) 22:20:18 ID:??? (+71,+26,-23)
    MySQLであるテーブルのカラムの一部が以下のようになっているとします.
    ここから,県名の多いものを上位3つ取得するのってどうすればいいですか?

    神奈川
    埼玉
    神奈川
    栃木
    埼玉
    栃木
    茨城
    埼玉
    茨城
    埼玉
    埼玉
    茨城



    こういう感じで全国の県名がたくさん
    239 : NAME IS - 2009/01/10(土) 23:20:46 ID:??? (+16,-30,-91)
    >>238
    SELECT COUNT(*), 県名 FROM 全国 GROUP BY 県名 ORDER BY COUNT(*) DESC LIMIT 3;
    かな。

    俺も今MySQL勉強中なんだけど、SQL書くとき、大文字で書いてる?小文字?
    Oracle 使う人が皆大文字だったから、今はそれに倣って俺も大文字にしてるけど。
    240 : NAME IS - 2009/01/11(日) 00:41:14 ID:??? (+63,+29,-4)
    テーブルやフィールドと区別付けるために、全部大文字にしてる。
    242 : 238 - 2009/01/11(日) 01:30:26 ID:??? (+64,+29,-15)
    >>239さんありがとうございました

    私はSQL文を直接打つ場合は全部小文字です。
    プログラムから使用するときは>>240さんと同じ理由で大文字にしてます。
    243 : NAME IS - 2009/01/11(日) 06:02:53 ID:??? (-3,-30,-26)
    >>241
    $handle->execute() の前後を Time::HiRes で測る、というのではだめ?
    244 : NAME IS - 2009/01/11(日) 12:16:43 ID:??? (+3,-30,-47)
    [tbl1]
    id
    1
    2
    3

    [tbl2]
    id | name | number
    1 | 山田 | 18

    [tbl3]
    bango | name | getup
    2 | 橋本 | 15時半

    [tbl4]
    num | name | memo
    3 | 富永 | 遅刻しやすい


    tblをベースに
    id | name
    1 | 山田
    2 | 橋本
    3 | 富永

    のように取得したいのですが、何か良い方法はないでしょうか。
    245 : NAME IS - 2009/01/11(日) 12:19:47 ID:??? (-2,-30,-15)
    tbl2 に id=2 or 3,(tbl3 に id=1 or3, tbl4 にid=1 or 2)の人はいるのか、いないのか。
    246 : NAME IS - 2009/01/12(月) 11:38:43 ID:??? (-1,-29,-5)
    as で名前を変えたselect文をunionするとか
    247 : NAME IS - 2009/01/12(月) 11:41:56 ID:??? (-1,-29,-25)
    つか項目数同じならいいか、unionでtbl1以外を全部まとめてtbl1とjoin
    248 : NAME IS - 2009/01/12(月) 21:12:33 ID:??? (+62,+29,-38)
    すみません。
    オフライン環境でCGI動作テストをしようと
    考えているのですが、この場合、MySqlを
    どこか特殊なフォルダにインストールしないといけないとか
    設定ファイルを書き変えないといけないとかありますか?

    CGIからデータベースの読み出しテストをしたいと考えています。
    249 : NAME IS - 2009/01/12(月) 22:03:02 ID:??? (+65,+29,-4)
    アクセス権限だけ確認して
    あとは普段のままでいいと思うけど
    250 : NAME IS - 2009/01/12(月) 23:38:21 ID:??? (+57,+29,-9)
    >>243
    ありがとうございます。
    DBIで取得できないだろうかと考えましたが、
    やはり自前で測るしかなさそうですね。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - insertall + - mregexp + - SSD + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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