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

    私的良スレ書庫

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

    元スレ【MySQL】下らねぇ質問はID出して書き込みやがれ 2

    mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    451 : 448 - 2012/05/06(日) 16:29:05.64 ID:kaAb9YNz (-25,+29,-13)
    >>450
    早速ありがとうございます!
    mysqlを起動してしまっていました…。
    一旦exitしてから実行したら上手く出来たようです。大変感謝致します…!
    452 : NAME IS - 2012/05/08(火) 22:11:40.49 ID:??? (+0,+0,+0)
    >436
    なんか、Excelのシートをそのままテーブルにしました、って感じだな。
    んで、Lookup関数で名前は引っ張れると考えているような…
    リレーショナルデータベースの基本中の基本がなっていないですねぇ。

    他の方も言っている様に、根本的な設計がおかしいです。
    また、t_workテーブルはカラム数が可変(増えていく)ように見えます。
    そんなことしていると、レコード長の制限に引っかかったりしますよ。
    設計した奴をシメて、初めからやり直すことを薦めます。


    まぁ、これでは解決しないと思うので、SQLらしい回答も

    userIDが一致するuserNameが含まれるような結合にすれば可能です。
    全ての組合せとなる直積集合(デカルト積の方が伝わるかも)はクロス結合で生成できます。
    その中からuserIDが一致するものを抜き出せばOKということです。

    で、クエリを書くと下記のようになります。

    SELECT
    t_work.f_workID,
    MAX( CASE WHEN t_work.f_a1 = t_user.f_userID THEN t_user.f_userName ELSE NULL END ) AS a1,
    MAX( CASE WHEN t_work.f_a2 = t_user.f_userID THEN t_user.f_userName ELSE NULL END ) AS a2,
    (必要な数だけ書く)
    MAX( CASE WHEN t_work.f_zX = t_user.f_userID THEN t_user.f_userName ELSE NULL END ) AS zX
    FROM t_work
    CROSS JOIN t_user
    GROUP BY t_work.f_workID

    簡単に解説

    CROSS JOIN t_user
    クロス結合です。ON条項のないINNER JOINでも同じ結果になりますが、直積を求めていることを
    明示するためにもCROSS JOINを使いましょう。

    GROUP BY t_work.f_workID
    workID毎に纏める、まぁ普通のGROUP BYです。

    MAX( CASE WHEN t_work.f_a1 = t_user.f_userID THEN t_user.f_userName ELSE NULL END ) AS a1
    今回のクエリのポイントです。
    t_work.f_a1 = t_user.f_userIDが成立するuserNameを引っ張り、それ以外ではNULLにします。
    MAX等の集計関数はNULLを除外するので、t_work.f_a1 = t_user.f_userIDの時の値のみ残ります。
    ※集計関数のNULLは要注意事項です

    SELECT *
    FROM t_work
    CROSS JOIN t_user
    ORDER BY t_work.f_workID
    を実行すると、理解しやすいかも

    今回みたいなテーブル構成の場合CASE式を駆使すると意外に対応できたりします。
    PHPのswitch-caseのような「文」とは全く違うので、混同しないようにしましょう。
    453 : 452 - 2012/05/08(火) 22:27:04.03 ID:??? (+32,+29,-71)
    あ、SELECT * ~のクエリを試せば想像できると思いますが、全ての組合せを生成するので
    クロス結合はかなり高コストなクエリです。
    なので、頻繁には使わない方がいいです。

    結局「設計をやり直せ」に戻ります
    454 : NAME IS - 2012/05/11(金) 11:13:15.19 ID:3XKKtx03 (+31,+29,-68)
    MySQLってカラムの追加は向いてるけど、データの激しい更新は向いてないって本当なんでしょうか?
    たとえば1秒間に100回更新するカウンターとかはMySQLでするんじゃなくテキストでやった方が良いと聞いたんですが
    455 : NAME IS - 2012/05/11(金) 12:36:13.12 ID:??? (-28,-30,-39)
    >>454
    今試してみたらMySQLでカウンタは毎秒1744回更新できたよ。
    (Xeon W3520 2.67GHz、MySQL 5.5.24、InnoDB、Java)
    これで何か問題ある?
    456 : NAME IS - 2012/05/11(金) 12:37:48.94 ID:3XKKtx03 (+27,+29,-17)
    わざわざありがとうございます
    会社でカウンタ作るときわざわざMySQL使うなといわれたのですみません
    457 : NAME IS - 2012/05/11(金) 12:40:49.56 ID:??? (+22,+29,-17)
    新入社員がボロクソに扱われる季節か
    458 : NAME IS - 2012/05/11(金) 18:44:58.36 ID:??? (+27,+29,-19)
    高いボラクルとか買って景気回復に貢献してください
    459 : NAME IS - 2012/05/11(金) 19:56:01.82 ID:??? (+6,+0,-42)
    >454
    同時アクセスとかを考えると、テキストファイルよりMySQLの方がマシだと思うが、
    カウンタのためだけならMySQLは入れなくてもいいような…

    memcachedとかの方がパフォーマンスもいいだろうし
    460 : NAME IS - 2012/05/12(土) 01:21:38.26 ID:??? (+31,+29,-39)
    新入社員で思い出したが
    俺の会社で一つのDBにテーブルが200万個あるのが設計ミスに思えて仕方が無い
    皆こんなに作るモン?
    461 : NAME IS - 2012/05/12(土) 01:32:30.84 ID:??? (+22,+24,-3)
    >>460
    具体的にどう設計ミス?
    462 : NAME IS - 2012/05/12(土) 01:45:11.04 ID:??? (+42,+29,-33)
    ID出した方が良いか
    俺個人のがphpmyadmin使ってるからかもしれないけど
    テーブルはスッキリ、詰め込めるものは全部不恰好でもレコードでって考えてる

    ちなみにその会社の設計は200万個のテーブルにそれぞれ1万個のレコードがある感じ
    463 : NAME IS - 2012/05/12(土) 09:20:41.76 ID:??? (+27,+29,-38)
    数だけじゃ何も判断できないだろ。

    まぁ、その使用する環境でそれだけのテーブルを扱う場合に
    パフォーマンスが出ない、なんて問題があったらシステム設計ミスと
    いえるかも知れんが。
    464 : NAME IS - 2012/05/12(土) 09:36:38.81 ID:??? (-28,-26,-29)
    別にテーブル数は100万個あったって問題はないぞ
    なんたってテーブルキャッシュがデフォで65535個もあるんだからなぁ!
    466 : 462 - 2012/05/12(土) 12:04:42.99 ID:+gwxXnlU (+38,+29,-65)
    例えると利用者が200万人、買ったもの履歴が1人大体1万個みたいな感じ
    利用者の情報が入ったテーブルと
    利用者ごとにテーブル用意して、そのテーブルに購入履歴のレコードを記録してる

    俺としては購入履歴を全部一緒にして200億ぐらいレコードのあるテーブルにしていいと思ってるんだけど
    467 : NAME IS - 2012/05/12(土) 12:36:43.09 ID:??? (+26,+28,-12)
    joinとkあunionとかする時めちゃめんどくさいと思うけど(まぁそれを手作業ではしなくて良い状況なんでしょうが)
    468 : NAME IS - 2012/05/12(土) 13:35:52.49 ID:??? (+38,+29,-56)
    >>466
    俺も200万テーブルはいかがかと思うが
    設計当時のハードウェア制約やパフォーマンス稼ぎ名目で正規形を崩す事があるからなんとも言えない
    バッドノウハウだとしても稼動中のシステムの改修は中々やらせてもらえないだろう
    470 : NAME IS - 2012/05/12(土) 15:16:35.08 ID:??? (+33,+30,-90)
    まぁ、俺だったらパーティショニングするけどね
    それも一つでパーティショニングするのではなく、無理難題を何度も乗り越えてきてもはやDB歴戦の勇者となった俺は2つでパーティショングする
    8種類で分けたのを18種類でわけて164通りとかそんな風に。これがとてつもなく早い
    471 : NAME IS - 2012/05/12(土) 16:14:22.42 ID:+gwxXnlU (+27,+29,-20)
    二段階に分けるってのは凄い勉強になったけど、それ144通りじゃない?
    473 : 472 - 2012/05/12(土) 16:57:12.59 ID:??? (+27,+29,-27)
    ごめんなさい、解決しました
    ユーザ名とパスワードを別ホストから使えるよう許可する必要があったんですね
    スレ汚しすみませんでした
    474 : NAME IS - 2012/05/12(土) 20:01:04.76 ID:??? (+12,+24,+0)
    学んだな
    475 : NAME IS - 2012/05/12(土) 20:38:44.78 ID:??? (-26,-29,-29)
    phpmyadminで200万テーブル扱えるんだ…
    ブラクラにならないんだ。すげー

    MyISAMのテーブルロック回避でユーザーごとにテーブルを作成した、とかなんだろうけど
    UNIONで集計とかは考えたくないなぁ
    476 : NAME IS - 2012/05/12(土) 20:50:03.72 ID:??? (+29,+29,-12)
    >465
    過去5日分を集計したテーブルを予めつくればいいんじゃないの?
    477 : 465 - 2012/05/12(土) 20:54:24.40 ID:??? (+31,+29,-23)
    >>476
    すいません、書き方が悪かったです。
    アクセス日より過去5日ですので、当日分は常に変動すると思うのです。
    478 : 465 - 2012/05/12(土) 21:34:19.67 ID:??? (+33,+29,-85)
    >>476
    何度もすいません。
    テンポラリテーブルというものがあると知ったので
    スコアを抽出したテーブルを一時的に作ってランキングを抽出しようと考えたのですが
    テンポラリテーブルは自己結合ができないとの事で、また悩んでおります。
    479 : NAME IS - 2012/05/12(土) 21:56:51.07 ID:??? (-27,-30,-134)
    MySQLは1テーブルあたり1つ以上のファイルを作る。
    なのでOSがファイルを200万個扱えるかどうかという話がある。
    それくらいだとLinuxではiノードの数が足りなくなる場合がある(増やせるけど)。

    あと扱えはするけど、古いOSだとlsするだけで数分かかったり、
    さらにulimit -nの制限をくらうので同時には開けず、
    テーブルアクセスのたびにopen/closeを繰り替えす残念な挙動になる。
    Linuxの都合から言えばテーブル数は1万以下にはしたい。
    480 : NAME IS - 2012/05/12(土) 21:57:31.77 ID:??? (+27,+29,-11)
    普通のテーブル作ってそれを更新すりゃいい話じゃないの?
    ランキングなんて、見る人によって内容が変わるもんじゃないでしょ。
    481 : NAME IS - 2012/05/12(土) 22:07:33.27 ID:??? (-27,-29,-45)
    >>478
    一時テーブルを2回結合するとエラーが出る!不思議!
    でも普通のテーブルをTRUNCATE TABLEしてからINSERT INTO ... AS SELECT ... してから結合すると…?
    483 : NAME IS - 2012/05/13(日) 11:10:18.00 ID:??? (-26,-29,-52)
    mysqlで全文検索を実装したのですが
    大量のレコードに引っかかるワードで検索すると
    単純なselect...match..against構文でも10秒以上かかってしまいます
    一定以上時間かかるようなクエリは途中で実行を終了させる、というようなことはできますでしょうか
    485 : NAME IS - 2012/05/13(日) 16:07:24.39 ID:??? (+26,+28,-18)
    同期をとるっつーのならレプリケーションでは?
    やったこと無いから知らんけど w
    487 : NAME IS - 2012/05/13(日) 18:02:10.09 ID:??? (+24,+29,-37)
    マルチというか、スレ違いと言われてこっちに来ますた
    データの同期じゃなくてテーブル構成の同期だけなので、レプリケーションじゃないです
    488 : NAME IS - 2012/05/13(日) 18:35:38.96 ID:??? (-28,-30,-49)
    >>487
    mysqldump --no-dataの出力か、MySQL WorkbenchでExportしたファイルを
    Subversionで管理してみたらいいんじゃない。
    489 : NAME IS - 2012/05/14(月) 11:35:35.76 ID:rmHVUy71 (+25,+30,+0)
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
    492 : NAME IS - 2012/05/14(月) 21:03:27.71 ID:CB4EPI8d (+25,+30,+0)
    493 : NAME IS - 2012/05/15(火) 06:29:09.62 ID:bfF6xyzj (+0,+0,+0)
    語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
    語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
    語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
    語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
    語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
    語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
    語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
    語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
    語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
    語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
    語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
    語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
    語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
    語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
    語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~語気光線( ´Д`)y━・~~
    494 : NAME IS - 2012/05/15(火) 19:24:07.70 ID:bfF6xyzj (+25,+30,+0)
    それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
    それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
    それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
    それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
    それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
    それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
    それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
    それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
    それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
    それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
    それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
    それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
    それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
    それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
    それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
    それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
    それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
    それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
    495 : NAME IS - 2012/05/15(火) 23:07:41.42 ID:??? (+27,+29,-3)
    どうも仕事で嫌なことがあると戻ってくるみたいね
    496 : NAME IS - 2012/05/16(水) 04:25:09.96 ID:/ibgSKqe (+24,+29,-50)
    私が千歳科学技術大学 グローバルシステムデザイン学科 専任講師・理学博士:深町 賢一だが何か?
    用があるなら、http://www.chitose.ac.jp/course/teacher/glo/000057.html
    497 : NAME IS - 2012/05/16(水) 04:58:59.13 ID:QUWdYWsE (+27,+29,-93)
    このスレじゃ瞬殺されそうなほど下らなくて厨な質問で申し訳ないが、
    MySQLのコミュニティーエディションをダウンロードして、
    早速アクセスとかファイルメーカーのような使い方って出来ないですよね?

    石、投げないで
    498 : NAME IS - 2012/05/16(水) 10:14:54.20 ID:??? (-25,-28,-16)
    できない。MySQL自体にGUIはない。
    499 : NAME IS - 2012/05/16(水) 17:44:05.90 ID:??? (+23,+29,-1)
    >>498
    やはり・・・
    レスありがとうでした
    500 : NAME IS - 2012/05/16(水) 23:52:10.15 ID:??? (-28,-29,-14)
    >>497
    Accessでリンクテーブル使う
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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