私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ【MySQL】下らねぇ質問はID出して書き込みやがれ 2
mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
>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のような「文」とは全く違うので、混同しないようにしましょう。
なんか、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のような「文」とは全く違うので、混同しないようにしましょう。
あ、SELECT * ~のクエリを試せば想像できると思いますが、全ての組合せを生成するので
クロス結合はかなり高コストなクエリです。
なので、頻繁には使わない方がいいです。
結局「設計をやり直せ」に戻ります
クロス結合はかなり高コストなクエリです。
なので、頻繁には使わない方がいいです。
結局「設計をやり直せ」に戻ります
MySQLってカラムの追加は向いてるけど、データの激しい更新は向いてないって本当なんでしょうか?
たとえば1秒間に100回更新するカウンターとかはMySQLでするんじゃなくテキストでやった方が良いと聞いたんですが
たとえば1秒間に100回更新するカウンターとかはMySQLでするんじゃなくテキストでやった方が良いと聞いたんですが
わざわざありがとうございます
会社でカウンタ作るときわざわざMySQL使うなといわれたのですみません
会社でカウンタ作るときわざわざMySQL使うなといわれたのですみません
>454
同時アクセスとかを考えると、テキストファイルよりMySQLの方がマシだと思うが、
カウンタのためだけならMySQLは入れなくてもいいような…
memcachedとかの方がパフォーマンスもいいだろうし
同時アクセスとかを考えると、テキストファイルよりMySQLの方がマシだと思うが、
カウンタのためだけならMySQLは入れなくてもいいような…
memcachedとかの方がパフォーマンスもいいだろうし
新入社員で思い出したが
俺の会社で一つのDBにテーブルが200万個あるのが設計ミスに思えて仕方が無い
皆こんなに作るモン?
俺の会社で一つのDBにテーブルが200万個あるのが設計ミスに思えて仕方が無い
皆こんなに作るモン?
>>460
具体的にどう設計ミス?
具体的にどう設計ミス?
ID出した方が良いか
俺個人のがphpmyadmin使ってるからかもしれないけど
テーブルはスッキリ、詰め込めるものは全部不恰好でもレコードでって考えてる
ちなみにその会社の設計は200万個のテーブルにそれぞれ1万個のレコードがある感じ
俺個人のがphpmyadmin使ってるからかもしれないけど
テーブルはスッキリ、詰め込めるものは全部不恰好でもレコードでって考えてる
ちなみにその会社の設計は200万個のテーブルにそれぞれ1万個のレコードがある感じ
数だけじゃ何も判断できないだろ。
まぁ、その使用する環境でそれだけのテーブルを扱う場合に
パフォーマンスが出ない、なんて問題があったらシステム設計ミスと
いえるかも知れんが。
まぁ、その使用する環境でそれだけのテーブルを扱う場合に
パフォーマンスが出ない、なんて問題があったらシステム設計ミスと
いえるかも知れんが。
別にテーブル数は100万個あったって問題はないぞ
なんたってテーブルキャッシュがデフォで65535個もあるんだからなぁ!
なんたってテーブルキャッシュがデフォで65535個もあるんだからなぁ!
例えると利用者が200万人、買ったもの履歴が1人大体1万個みたいな感じ
利用者の情報が入ったテーブルと
利用者ごとにテーブル用意して、そのテーブルに購入履歴のレコードを記録してる
俺としては購入履歴を全部一緒にして200億ぐらいレコードのあるテーブルにしていいと思ってるんだけど
利用者の情報が入ったテーブルと
利用者ごとにテーブル用意して、そのテーブルに購入履歴のレコードを記録してる
俺としては購入履歴を全部一緒にして200億ぐらいレコードのあるテーブルにしていいと思ってるんだけど
joinとkあunionとかする時めちゃめんどくさいと思うけど(まぁそれを手作業ではしなくて良い状況なんでしょうが)
>>466
俺も200万テーブルはいかがかと思うが
設計当時のハードウェア制約やパフォーマンス稼ぎ名目で正規形を崩す事があるからなんとも言えない
バッドノウハウだとしても稼動中のシステムの改修は中々やらせてもらえないだろう
俺も200万テーブルはいかがかと思うが
設計当時のハードウェア制約やパフォーマンス稼ぎ名目で正規形を崩す事があるからなんとも言えない
バッドノウハウだとしても稼動中のシステムの改修は中々やらせてもらえないだろう
まぁ、俺だったらパーティショニングするけどね
それも一つでパーティショニングするのではなく、無理難題を何度も乗り越えてきてもはやDB歴戦の勇者となった俺は2つでパーティショングする
8種類で分けたのを18種類でわけて164通りとかそんな風に。これがとてつもなく早い
それも一つでパーティショニングするのではなく、無理難題を何度も乗り越えてきてもはやDB歴戦の勇者となった俺は2つでパーティショングする
8種類で分けたのを18種類でわけて164通りとかそんな風に。これがとてつもなく早い
二段階に分けるってのは凄い勉強になったけど、それ144通りじゃない?
ごめんなさい、解決しました
ユーザ名とパスワードを別ホストから使えるよう許可する必要があったんですね
スレ汚しすみませんでした
ユーザ名とパスワードを別ホストから使えるよう許可する必要があったんですね
スレ汚しすみませんでした
phpmyadminで200万テーブル扱えるんだ…
ブラクラにならないんだ。すげー
MyISAMのテーブルロック回避でユーザーごとにテーブルを作成した、とかなんだろうけど
UNIONで集計とかは考えたくないなぁ
ブラクラにならないんだ。すげー
MyISAMのテーブルロック回避でユーザーごとにテーブルを作成した、とかなんだろうけど
UNIONで集計とかは考えたくないなぁ
>465
過去5日分を集計したテーブルを予めつくればいいんじゃないの?
過去5日分を集計したテーブルを予めつくればいいんじゃないの?
>>476
何度もすいません。
テンポラリテーブルというものがあると知ったので
スコアを抽出したテーブルを一時的に作ってランキングを抽出しようと考えたのですが
テンポラリテーブルは自己結合ができないとの事で、また悩んでおります。
何度もすいません。
テンポラリテーブルというものがあると知ったので
スコアを抽出したテーブルを一時的に作ってランキングを抽出しようと考えたのですが
テンポラリテーブルは自己結合ができないとの事で、また悩んでおります。
MySQLは1テーブルあたり1つ以上のファイルを作る。
なのでOSがファイルを200万個扱えるかどうかという話がある。
それくらいだとLinuxではiノードの数が足りなくなる場合がある(増やせるけど)。
あと扱えはするけど、古いOSだとlsするだけで数分かかったり、
さらにulimit -nの制限をくらうので同時には開けず、
テーブルアクセスのたびにopen/closeを繰り替えす残念な挙動になる。
Linuxの都合から言えばテーブル数は1万以下にはしたい。
なのでOSがファイルを200万個扱えるかどうかという話がある。
それくらいだとLinuxではiノードの数が足りなくなる場合がある(増やせるけど)。
あと扱えはするけど、古いOSだとlsするだけで数分かかったり、
さらにulimit -nの制限をくらうので同時には開けず、
テーブルアクセスのたびにopen/closeを繰り替えす残念な挙動になる。
Linuxの都合から言えばテーブル数は1万以下にはしたい。
普通のテーブル作ってそれを更新すりゃいい話じゃないの?
ランキングなんて、見る人によって内容が変わるもんじゃないでしょ。
ランキングなんて、見る人によって内容が変わるもんじゃないでしょ。
>>478
一時テーブルを2回結合するとエラーが出る!不思議!
でも普通のテーブルをTRUNCATE TABLEしてからINSERT INTO ... AS SELECT ... してから結合すると…?
一時テーブルを2回結合するとエラーが出る!不思議!
でも普通のテーブルをTRUNCATE TABLEしてからINSERT INTO ... AS SELECT ... してから結合すると…?
mysqlで全文検索を実装したのですが
大量のレコードに引っかかるワードで検索すると
単純なselect...match..against構文でも10秒以上かかってしまいます
一定以上時間かかるようなクエリは途中で実行を終了させる、というようなことはできますでしょうか
大量のレコードに引っかかるワードで検索すると
単純なselect...match..against構文でも10秒以上かかってしまいます
一定以上時間かかるようなクエリは途中で実行を終了させる、というようなことはできますでしょうか
同期をとるっつーのならレプリケーションでは?
やったこと無いから知らんけど w
やったこと無いから知らんけど w
マルチというか、スレ違いと言われてこっちに来ますた
データの同期じゃなくてテーブル構成の同期だけなので、レプリケーションじゃないです
データの同期じゃなくてテーブル構成の同期だけなので、レプリケーションじゃないです
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
千歳科学技術大学 グローバルシステムデザイン学科 深町 賢一
語気光線( ´Д`)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━・~~
語気光線( ´Д`)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━・~~
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
それよりゴキブリ高専卒どもはワシにさっさと謝罪せんか!
私が千歳科学技術大学 グローバルシステムデザイン学科 専任講師・理学博士:深町 賢一だが何か?
用があるなら、http://www.chitose.ac.jp/course/teacher/glo/000057.html
用があるなら、http://www.chitose.ac.jp/course/teacher/glo/000057.html
このスレじゃ瞬殺されそうなほど下らなくて厨な質問で申し訳ないが、
MySQLのコミュニティーエディションをダウンロードして、
早速アクセスとかファイルメーカーのような使い方って出来ないですよね?
石、投げないで
MySQLのコミュニティーエディションをダウンロードして、
早速アクセスとかファイルメーカーのような使い方って出来ないですよね?
石、投げないで
>>497
Accessでリンクテーブル使う
Accessでリンクテーブル使う
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
みんなの評価 : 類似してるかもしれないスレッド
- 【】 MySQLを買収したSunを買収したOracleを 【】 (112) - [25%] - 2023/1/22 14:15
- 【この先一体】MySQL 総合 Part15【どうなるの】 (1001) - [21%] - 2009/11/22 13:31 ○
トップメニューへ / →のくす牧場書庫について