のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,312人
昨日: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
    301 : NAME IS - 2009/01/24(土) 18:15:50 ID:u1WNrIEs (+30,+30,+0)

    Winnyの情報流出を管理・指導する国のIPA職員 岡田賢治 主任が違法ファイルDLしまくり感染して流出したドキュメント類。
    嫁以外の女とのエッチ写真や、幼女児童ポルノ、違法アプリ所持、違法アプリバラ蒔き証拠など大量に流出。

    ★郵政省(今の総務省)、日立製作所、博報堂、味の素・・・と凄い流出規模!
    ★本人は著作権無視で違法ファイルダウンしまくりのくせに、著作権を勉強して知的所有権管理資格持ってるw
    ★全契約先でこの契約書結んでいるが、秘密保持、情報返還・処分義務の立派な契約違反。
    ★西武百貨店社員6155名分の個人情報を違法に自宅に持ち帰り流出。
    ★楽天ショップから個人情報データを違法に自宅に持ち去り大量に個人情報流出!
    ★大量のソニーやマイクロソフト等の大手企業勤務者の流出個人情報! 自民党とか衆議院とかもある。
    ★IPAは自身の流出は画像しか無いと断言しているが大嘘で、IPA役員資料とかも流出している。(IPA資料を無断で自宅に持ち帰り)
    ★三井リハウス(株)の入居者の口座番号や入金金額等のデータベースもIPA岡田賢治主任が流出
    国の情報処理推進機構 IPA専門職員として違法アプリばら蒔きの大問題犯罪証拠も流出。
    違法アプリやシリアルキーを周囲にわざとバラ蒔いている。(現在も違法ATOKを使用しており、長年違法アプリ等を日常的に使用していた可能性大)
    西武百貨店、日立製作所、博報堂、等の各企業向けに作っていたソフト類も違法アプリで作られていた可能性あり。

    ★Micro Soft VisualC++の違法シリアルキーを知人に教えたメール
    ★メールソフトRimArts社 Beckyの違法シリアルキー等、内容から見ても長年かなり広範囲にバラ蒔いていたようだ
    305 : NAME IS - 2009/01/24(土) 18:17:26 ID:u1WNrIEs (+33,+30,-301)

    IPA職員 岡田賢治 主任の報道記事まとめ【3】 アサヒ芸能 週刊誌に岡ちゃんと純子と仲良く掲載
    ※違法アプリ、変態児童ポルノ等のダウンを認めながら給与支払い停職3カ月の国民を馬鹿にした処分!

    ★探偵ファイル IPA流出事件職員の妻の転売業者、薬事法違反が確定★
    http://www.tanteifile.com/diary/2009/01/08_02/index.html
    ★アサヒ芸能 週刊誌 ネット情報セキュリティ相談窓口職員の裸画像が流出 恥写真!&島○純子も
    ★IPA職員に停職3カ月の懲戒処分 「Winny」「Share」情報流出で
    http://www.itmedia.co.jp/news/articles/0901/19/news085.html
    ★情報流出のIPA職員、停職3カ月の懲戒処分
    http://internet.watch.impress.co.jp/cda/news/2009/01/19/22131.html
    ★IPA、情報流出対策本部を設置
    http://www.itmedia.co.jp/enterprise/articles/0901/19/news077.html
    ★経過を報告するIPA仲田理事
    ★IPA職員が収集、流出した とんでもない「反社会的」情報
    http://www.j-cast.com/2009/01/20033932.html
    ★プレス発表 当機構職員のパソコンによる情報流出等について
    http://www.ipa.go.jp/about/press/20090119.html
    ★情報流出のIPA職員、停職3カ月の処分に
    http://japan.cnet.com/news/sec/story/0,2000056024,20386662,00.htm
    ★IPA職員の懲戒処分を発表 - 私物PCからの大量情報流出問題で
    http://journal.mycom.co.jp/news/2009/01/19/018/index.html
    ★IPA流出騒動の職員、処分の実質は3ヶ月の有給休暇
    http://www.tanteifile.com/newswatch/2009/01/20_01/index.html
    ★IPA流出職員 停職3ヶ月"有給休暇"処分にネット住民激怒!
    http://uratan.jp/hotnews/2009/01/7869/
    308 : NAME IS - 2009/01/25(日) 03:45:04 ID:??? (+3,-29,-66)
    table_cacheとの絡みを考えると
    MySQLで30,000テーブル作るのはあまり良くない。

    よくアクセスされるテーブルが高々100個とかいうのなら別だけど、
    30,000テーブルを全部スキャンするとか、
    大勢のクライアントがそれぞれのテーブルに満遍なくアクセスすると、
    MySQLはしんどい。
    309 : NAME IS - 2009/01/25(日) 03:53:02 ID:??? (+2,-30,-81)
    自分なら、スレッド保存テーブルを板ごと、月ごとに作るかな。
    news_dat_200901
    news_dat_200902
    みたいな。1テーブル250万レコード、これを1年間保存。
    あとは5.1のパーティショニング機能を使えば
    テーブル名をアプリで意識する必要がなくなるのでよりCOOLに。
    310 : NAME IS - 2009/01/25(日) 04:00:45 ID:??? (+0,-29,-32)
    既にあるDBからER図を作ろうと思ったのですが、DBDesigner4でエラーが出て使えませんでした。
    ソフトを紹介してください。

    みなさんは何を使っていますか?
    311 : NAME IS - 2009/01/25(日) 04:00:55 ID:??? (+59,+22,-94)
    ともあれ1レコード1レスになると思うのだけど、その上でどんなクエリを
    走らせるのかが気になる。本当にSQLが必要な処理なのか。
    場合によってはMySQL上には板・スレ・dat名の関連だけを保存して、
    統計処理などはファイルシステム上のdatファイルに対して直接行った
    方がよい場合もあるかと思う。
    あるいはdatをMySQLに入れるにしても1レコード1スレにするとか。
    312 : 306 - 2009/01/25(日) 04:31:12 ID:vKPBjHFd (-14,+30,-303)
    >>308-311
    皆さん、早速のレスありがとうございます!
    それぞれとても参考になるご意見で、ホント勉強になります。。

    >>308さん
    確かにtable_cacheを考えると、そうかもしれませんね~。
    実際に複数テーブルを一気にスキャンとかそういうこともありうると思います。
    たとえば、ある一定期間中に立ったスレッドからあるキーワードを含む書き込みを検索とかそういう場合ですね。
    大勢のクライアントがアクセスするということは想定していませんが、
    何万もテーブルを作るのは現実的ではなさそうですね。

    >>309さん
    なるほど、そういう考え方もありますね~。
    パーティショニング機能というのは私の勉強不足で知りませんでした。
    今調べてみましたが、複数のテーブルを1つに見せる手法なのですね。
    ただ、今使っているサーバのバージョンは4.0だそうです。
    現在は使えませんが、将来のバージョンアップを見据えて試しにやってみてもいいかなと思いました。

    >>311さん
    今のところ考えているのは、条件に当てはまる言葉の抽出です。
    いろいろ考えていますが、たとえばある時期に流行している言葉を探し出すとか、
    注目されているレスを探し出すとかそういうものです(本レスなら308、309、311に+1ずつカウントとか・・)。
    そんな時に検索・抽出が比較的容易なSQLを使おうとを考えました。

    1レコード1スレという発想は思いつきませんでした。
    横に伸ばすという考えですね。それだとレコード数は比較的少なく済みそうですね。

    皆様、いろいろご教授くださいましてありがとうございます!
    製作の参考にさせていただき、いろいろ試してみようと思います。
    313 : NAME IS - 2009/01/25(日) 10:22:31 ID:D/HP+Xv5 (+32,+29,-28)
    なかなか面白いテーマだね。
    >>311の言う通り、全てをSQLに頼らなくてもいいかもね。
    逆にSQLが必要な統計処理って何かな?
    314 : NAME IS - 2009/01/25(日) 12:31:34 ID:??? (+1,-26,-7)
    横に伸ばす・・・?
    1スレごとに1テーブル・・・?
    RDB使う意味なくね?
    315 : NAME IS - 2009/01/25(日) 12:43:48 ID:??? (-2,-29,-19)
    >>310
    MySQL Workbench
    http://www-jp.mysql.com/products/workbench/

    DBからのリバースは有償版がいるけど。
    316 : NAME IS - 2009/01/25(日) 23:48:17 ID:Vz6vQdtB (+42,+26,-17)
    質問させてください。
    テーブルに入った「A」「B」「C」というデータを
    「C」「A」「B」の順で並び替えするにはどうしたらいいでしょうか?
    317 : NAME IS - 2009/01/25(日) 23:53:42 ID:??? (+47,+24,-1)
    並び順などありません
    318 : NAME IS - 2009/01/26(月) 00:09:52 ID:??? (+1,-29,-12)
    >>316
    order by
    319 : 316 - 2009/01/26(月) 00:26:48 ID:zX/nxwDR (+29,+29,-12)
    >>318
    ありがとうございます。
    でも思い通りの自由な順番で並び替えしたいです…
    320 : NAME IS - 2009/01/26(月) 00:36:04 ID:??? (+12,-30,-136)
    >>319
    であればその「並び順」をカラムの値として持たせるしかない。

    IDX DATA
    2 "A"
    3 "B"
    1 "C"

    出力するときはIDXでORDER BY、並び替えしたいときはIDXの
    値を書き換える。
    テーブル内のレコード順に意味はない(ORDER BYで明示的に
    並べ替えを指定しない限り、どのような順で出力されるか保証
    されていない)というのは関係データベースの基本概念。
    この辺りはExcelとかの表とは異なるので頭を切り換える必要
    がある。
    321 : NAME IS - 2009/01/26(月) 00:47:52 ID:??? (+3,-29,-21)
    timeバージョンのDATE_SUBっぽい関数ない?
    TIME_SUBあるのかなと思ったら、なくてaddtimeがあったんだけど
    加える関数だから、できるのかどうか。
    今から過去10分間のデータを検索したい
    みたいなことをやりたいときはどうやるんでしょうか
    322 : NAME IS - 2009/01/26(月) 01:04:01 ID:??? (-7,-26,+0)
    SUBTIME
    323 : 316 - 2009/01/26(月) 01:17:10 ID:zX/nxwDR (+34,+29,-62)
    >>320
    ありがとうございます。しかしながら
    http://okwave.jp/qa2374879.html
    http://q.hatena.ne.jp/1189526421など
    いろいろ方法はありそうですが
    もっと簡単な方法(C,A,B)←こんな感じ(括弧で括って「,」で順番を決める。)
    ど忘れしましたが以前ソートできた記憶があります。思い出せない…
    324 : NAME IS - 2009/01/26(月) 01:41:30 ID:??? (+33,+10,-25)
    リファレンス見ればいいだろ
    325 : NAME IS - 2009/01/26(月) 02:28:31 ID:??? (+67,+29,-13)
    select * で、このフィールドだけはいらないっ
    てやりたいんだけどどうすればいい?
    -フィールド名なんてやってみたけど無理だった
    326 : NAME IS - 2009/01/26(月) 02:29:20 ID:??? (-2,-29,-7)
    >>322
    ありがとうございます
    あれからいろいろとやっていて
    between とcastでなんとかできました
    327 : 325 - 2009/01/26(月) 02:35:46 ID:??? (+42,+19,+1)
    フィールドじゃなくてカラムだった
    328 : NAME IS - 2009/01/26(月) 06:11:56 ID:??? (+72,+29,-4)
    横着すんな。必要なカラムは明示的に全部列挙しろ。
    329 : NAME IS - 2009/01/26(月) 06:45:25 ID:??? (+72,+29,-21)
    >>328
    おまえのようにまともに答えられないくせにレスするやつが一番うざい
    2chから消えろ人間のクズ
    330 : NAME IS - 2009/01/26(月) 09:34:23 ID:??? (+3,-30,-83)
    datetimeから今日の分だけのデータを取り出すのってできる?
    datetimeは0000-00-00 00:00:00だから"2009-01-26%"でlike検索したら
    26日のは抽出できたけど、これをdate(now())でしようと思ったらどうもうまくいかない
    where datetimeカラム = date(now())
    とかで日付検索してくれるのかと思ったら普通の文字検索とかわらん・・
    今、処理されたときのdateでやるにはdatetimeの他にdateだけのカラム作るしかない?
    datetimeだけでできたらそれに越したことはないんだけどな
    331 : NAME IS - 2009/01/26(月) 09:40:55 ID:??? (-2,-30,-14)
    とおもったら
    WHERE TO_DAYS(NOW()) - TO_DAYS(datetimeカラム) <= 1
    でできた
    332 : NAME IS - 2009/01/26(月) 10:30:26 ID:??? (+69,+29,-19)
    >>329
    >>328が一番親切な答えだけどな。
    実際、全部ほしい時も*は使わない。
    333 : NAME IS - 2009/01/26(月) 10:46:52 ID:??? (+14,-30,-292)
    where句の条件にインデックスが使われるかどうかについて質問します。

    create table company(
    id integer primary key auto_increment,
    name varchar(100) not null unique,
    index company_name_index(name)
    );

    create table employee(
    id integer primary key auto_increment,
    name varchar(100) not null,
    company_id integer not null references company(id),
    index employee_company_id_index(company_id)
    );

    というテーブルがあって、

    select employee.* from employee, company
    where employee.company_id = company.id and company.name = ?
    order by id limit 0, 10

    というselect文を実行しているのですが、いろいろ調べた結果、
    このselect文の where company_id = ? がボトルネックのようでした。
    employeeテーブルにはcompany_idでインデックスをはっているし、company.name もユニークキーだし、
    十分高速に実行できるように思います。
    しかし、もしかしたらテーブルを結合したときはインデックスが使われないのかもしれないと思い、
    質問させていただきました。この推測は間違っているでしょうか。
    よろしくお願いします。
    334 : NAME IS - 2009/01/26(月) 11:02:02 ID:??? (-5,-29,+0)
    まず explain してみよう
    335 : 333 - 2009/01/26(月) 15:19:31 ID:??? (+3,-30,-145)
    >>333の続きです。
    テーブルを結合するかわりに、テーブルを別々に検索するとかなり速くなりました。
    つまり
    select employee.* from employee, company
    where employee.company_id = company.id and company.name = ?
    order by id limit 0, 10
    をやめて
    select id from company where name = ?;
    select * from employee where company_id = ? order by id limit 0, 10;
    に変更したんですけど、こっちのほうがだいぶ高速でした。
    テーブルの結合ってしないほうがいいんでしょうか。

    >>334
    説明するってことですか?何を説明すればいいでしょうか。
    足りない点があればご指示ください。
    336 : NAME IS - 2009/01/26(月) 15:26:20 ID:??? (-5,-29,-7)
    いや、、、SQLのEXPLAINだよ・・・
    337 : NAME IS - 2009/01/26(月) 15:55:03 ID:??? (+3,-30,-86)
    explain select .... とやると、index が使われてるかどうか、全件なめたりしてるかどうか、とかの情報が出る。
    select ... のところには、select 文の内容をそのまま書く。
    但し、(使ってるみたいだが) prepared statement は書けないから、place holder の処に適当な実値を入れて。
    338 : NAME IS - 2009/01/26(月) 22:10:13 ID:??? (+12,-15,-46)
    下記サイトは どんなテーブル構造になってるんでしょうか?

    ご存知の方よろしくおねがいします

    http://www.ffxiah.com/item.php?id=4098
    339 : NAME IS - 2009/01/26(月) 22:28:01 ID:??? (+56,+29,+0)
    知るかよ
    340 : NAME IS - 2009/01/26(月) 22:29:48 ID:??? (+65,+29,+1)
    >>339
    そうですか。
    素人ですね
    341 : NAME IS - 2009/01/26(月) 23:34:17 ID:??? (+2,-29,-92)
    >>336,337
    ありがとうございます。explainとは基本事項なんですね。お恥ずかしい。
    実際にやってみると、company に対しては using where と出てきますが、
    employee に関してはそれが出てきませんでした。
    で、2つに分割したあとのほうでは、company にも employee にも using where と出てきました。
    (インデックスはどの場合も使われているようです)
    よくわからないですけど、joinしたときはwhereが一カ所にしか使われないとか、
    そもそもMySQLではインデックスがselect文ごとに1つしか使われないとか
    そんな制限があったりはしませんよね?
    こういうことってマニュアルに書いてあるんでしょうか。
    342 : NAME IS - 2009/01/27(火) 00:12:24 ID:??? (+0,+29,-2)
    Extra列の前にkey列を見なさい。
    見方が分からないならここにコピペしなさい。
    343 : NAME IS - 2009/01/27(火) 02:03:50 ID:??? (+57,+29,-16)
    ルー語を想像しながら読むと楽しくなる
    344 : NAME IS - 2009/01/27(火) 03:33:12 ID:M7ovlZjo (+34,+24,-45)
    別のサーバのテーブルのコピーを、limitで区切りながら順次しようと思うのですが
    order byを指定しなくても、テーブルに何の変更もしなければ、
    selectで取り出される順番は必ず同じと考えていいのでしょうか?
    345 : NAME IS - 2009/01/27(火) 05:05:23 ID:??? (+67,+30,-160)
    >>344
    order byつけたくないの?
    いくつかのシチュエーションで統計情報が更新されて
    SQLの実行計画が変わる場合があるから、同じだとは保証できない。

    それ以外に順番が変わる要因がないかどうか調べて
    同じことを保証するにはMySQLのソースを隅から隅まで読まないといけない。
    全部読みきる労力 > order byによる性能劣化
    346 : NAME IS - 2009/01/27(火) 06:41:11 ID:??? (+43,+15,-12)
    そうなんですか
    そういうことならorder byを入れようと思います
    ありがとうございました
    347 : NAME IS - 2009/01/27(火) 21:39:32 ID:??? (+3,-30,-115)
    質問です。
    mysql -u root -p pass でコマンドプロンプトから操作はできるのですが、
    phpmyadminのトップ画面にいくと
    ”ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: N O)”
    と怒られてしまいます。

    設定ファイル(config.inc.php)をみても
    $cfg['Servers'][$i]['controluser'] = 'root';
    $cfg['Servers'][$i]['controlpass'] = 'pass';
    これでいいと思うのですが・・・よろしくお願いします
    348 : NAME IS - 2009/01/27(火) 21:45:51 ID:??? (+3,-30,+0)
    mysql> status
    --------------
    mysql Ver 14.12 Distrib 5.0.67, for Win32 (ia32)

    Connection id: 27
    Current database:
    Current user: root@localhost
    SSL: Not in use
    Using delimiter: ;
    Server version: 5.0.67-community-nt MySQL Community Edition (GPL)
    Protocol version: 10
    Connection: localhost via TCP/IP
    Server characterset: utf8
    Db characterset: utf8
    Client characterset: utf8
    Conn. characterset: utf8
    TCP port: 3306
    Uptime: 43 min 46 sec

    Threads: 1 Questions: 26 Slow queries: 0 Opens: 13 Flush tables: 1 Open tab
    les: 0 Queries per second avg: 0.010
    --------------

    mysql>

    ちなみに環境はWindowsXPです。
    349 : NAME IS - 2009/01/28(水) 01:10:33 ID:??? (+0,+0,+0)
    >>342
    >Extra列の前にkey列を見なさい。
    >見方が分からないならここにコピペしなさい。
    どうもありがとうございます。お言葉に甘えて、explainの結果を貼付けます。

    mysql> explain
    -> select employee.* from employee, company
    -> where employee.company_id = company.id and company.name = 'AAA'
    -> order by id limit 0, 10;
    +----+-------------+----------+------+---------------------------------+---------------------------+---------+---------------------+------+----------------------------------------------+
    | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
    +----+-------------+----------+------+---------------------------------+---------------------------+---------+---------------------+------+----------------------------------------------+
    | 1 | SIMPLE | company | ref | PRIMARY,name,company_name_index | name | 302 | const | 1 | Using where; Using temporary; Using filesort |
    | 1 | SIMPLE | employee | ref | employee_company_id_index | employee_company_id_index | 4 | example1.company.id | 2 | |
    +----+-------------+----------+------+---------------------------------+---------------------------+---------+---------------------+------+----------------------------------------------+

    (keyの値は、companyがname、employeeがemployee_company_id_indexです)。


    mysql> explain
    -> select id from company where name = 1;
    +----+-------------+---------+------+-------------------------+------+---------+------+------+-------------+
    | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
    +----+-------------+---------+------+-------------------------+------+---------+------+------+-------------+
    | 1 | SIMPLE | company | ALL | name,company_name_index | NULL | NULL | NULL | 3 | Using where |
    +----+-------------+---------+------+-------------------------+------+---------+------+------+-------------+

    (keyの値は、companyがnullです)。


    mysql> explain
    -> select * from employee where company_id = 1 order by id limit 0, 10;
    +----+-------------+----------+------+---------------------------+---------------------------+---------+-------+------+-----------------------------+
    | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
    +----+-------------+----------+------+---------------------------+---------------------------+---------+-------+------+-----------------------------+
    | 1 | SIMPLE | employee | ref | employee_company_id_index | employee_company_id_index | 4 | const | 1 | Using where; Using filesort |
    +----+-------------+----------+------+---------------------------+---------------------------+---------+-------+------+-----------------------------+

    (keyの値は、employeeがemployee_company_id_indexです)。
    350 : NAME IS - 2009/01/28(水) 01:53:34 ID:??? (+33,+5,-6)
    さんざんやったsetupscriptからダメ元でやったらなぜかできました
    なんでだろう・・・
    ←前へ 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 + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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