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

    私的良スレ書庫

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

    元スレMySQL 総合 Part13

    mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - 1064 + - limit + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    951 : NAME IS - 2008/06/04(水) 19:41:26 ID:??? (-1,-29,-23)
    ぐぁぁああぁ…replace into って、delete → insert だから、
    autoincrement のフィールドの値が変わるじゃねぇか…。
    952 : NAME IS - 2008/06/04(水) 23:33:29 ID:R8ngxTCT (+92,+29,-26)
    mysqlで誰にも知られていない
    秘密のコマンドがあると聞いた
    そのコマンドとは?
    953 : NAME IS - 2008/06/04(水) 23:46:50 ID:??? (+65,+29,-16)
    とりあえずマニュアル読めば誰にも知られていないわけではないけれど
    >>952が知らないコマンドは出てくるんじゃないの?
    954 : NAME IS - 2008/06/05(木) 01:51:04 ID:??? (+69,+29,-2)
    >>952
    またかよ…。 だからSELECTだっつってんだろが
    955 : NAME IS - 2008/06/05(木) 11:41:51 ID:??? (+57,+29,-36)
    秘密のコマンドはあります。
    でも誰も知らないから誰も答えられません。
    957 : NAME IS - 2008/06/05(木) 18:55:13 ID:??? (-5,-23,-2)
    素直にV2 に移行する。
    958 : NAME IS - 2008/06/05(木) 20:17:33 ID:539Qwkef (-20,+29,-23)
    >>957
    やはりそれが一番簡単ですかね。
    ドメインとメールアカウントが
    けっこうあるので移転がめんどうだ・・・
    959 : NAME IS - 2008/06/07(土) 02:13:41 ID:YKItF8pv (+70,+30,-218)
    ここで質問してもいいのかな?
    もし、スレ違いだったら誘導してくれると嬉しいです。

    服の検索をするためのテーブル設計について行き詰まっています。
    同じ服だけど、他種類のサイズがある場合、
    どういうテーブル設計にすればいいか考えあぐねています。

    現状では、
     (1) 服のサイズ以外の基本情報テーブル
     (2) 服の型番で、各サイズごとに記載したテーブル
    を用意しています。

    サイズで検索し、当てはまった商品の基本情報と全サイズ一覧を出す場合、
    一度のリクエストで、何度もクエリを送信しなければならず、非効率です。

    何とか良い方法はないでしょうか?

    あるいは、そういう目的別のテーブル設計事例集などがあればいいのですが、
    テーブル設計でAmazon検索しても、なぜか魔法瓶が羅列されてしまって、参考になりませんw
    お薦めの本、あるいは、複数サイズの洋服の最適なテーブル設計があれば、
    ヒントだけでも頂けませんでしょうか?
    960 : NAME IS - 2008/06/07(土) 03:54:16 ID:??? (+44,+21,-5)
    JOINしたら一発ででね?
    961 : NAME IS - 2008/06/07(土) 07:45:35 ID:??? (+57,+29,-43)
    JOINでもVUEでも一発で出すことはできるんですが、
    型番ごとに各サイズを格納するという作業をプログラム側でやってしまうのは、
    良い方法なのでしょうか? なんか泥臭い感じがして。
    962 : NAME IS - 2008/06/07(土) 09:19:41 ID:??? (+99,+30,-118)
    >型番ごとに各サイズを格納するという作業をプログラム側でやってしまうのは、

    あのね、「服の型番」と「サイズ」がどういう関係にあるか自体、業界外の人間には分からないんだ。
    「型番」が決まればサイズが決まるのか、それとも、型番→サイズというハイアラーキーになっているのかとか…。

    「型番」=「商品の基本情報」(のプライマリキー)で、「型番」→「サイズ」がハイアラーキーなのなら、
    「型番ごとに各サイズを格納するという作業」は単なるJOINだから、プログラム側では何もしなくてよいのでは。
    963 : NAME IS - 2008/06/07(土) 09:48:42 ID:??? (+57,+29,-30)
    なんだかシステム・エンジニアの要件定義そのもだな。

    業界や会社の物事を、いかにコンピューター上で実現するか。
    964 : NAME IS - 2008/06/07(土) 10:50:32 ID:??? (+106,+30,-258)
    >>962
    例えば、型番「hoge」の中にS(15)、M(20)、L(25)があるというイメージです。
    言われているハイアラーキーな関係になるかと思います。

    >>959で言うと、
    (1) テーブルに、型番「foo」の基本情報のフィールドがあり、
    (2) テーブルに、S、M、L というサイズのフィールドが、
    型番「foo」に対してそれぞれあります。

    上記前提で、
    例えばサイズ検索をして、hogeのMが引っ掛かった場合、
    「foo」の全サイズ情報も出力したいので、SとLのフィールドが必要になります。

    しかし、型番「bar」のサイズ展開は、L、XL、XXLであるため、
    型番を元に、サイズをひとつのフィールドにまとめてしまうと、
    検索するのに問題が生じます。

    よって、それぞれのサイズのフィールドに、
    各型番の基本情報をまとめるようなビューを作成しなければならないのです。
    この方式だと、検索結果に一致したサイズの型番で
    改めてクエリを投げて、結果をまとめるという処理が必要になります。

    未熟なので、もっと効率的な方法はいくらでもあるのでしょうし、
    指摘されている方法であっけなく片付けられる手順があるのかも知れませんが、
    それを学ぶ手段や書籍を見つけられずに試行錯誤しているのが現状です。

    MySQLに関してチューニングや入門書はいくらでも見つけられるのですが、
    こういう事例に関しての設計例は、一切見つけられなくて困っています。

    何とかお知恵あるいは書籍の情報を頂ければと思うのですが。
    965 : NAME IS - 2008/06/07(土) 11:14:02 ID:??? (+16,-30,-233)
    >それぞれのサイズのフィールドに、各型番の基本情報をまとめる

    の意味が分からん。

    単純に、これじゃだめなの?
    基本情報に「bar」があり、サイズがMかLのものを取得。

    create table dress (RID int primary key auto_increment, ID varchar(24), sz varchar(8));
    create table info (RID int primary key auto_increment, ID varchar(24), body text);

    insert into dress (ID,sz) values ('foo','S'),('foo','M'),('foo','L),('bar','S'),('bar','M'),('bar','L'),('bar','LL'),('bar','LX');
    insert into info (ID,body) values('foo','dress type foo'),('bar','dress type bar');
    select distinct D.ID,D.sz,I.body from dress as D left join info as I using (ID) where (I.body like '%bar%' and( D.sz = 'M' or D.sz = 'L'));
    966 : 964 - 2008/06/07(土) 11:14:09 ID:??? (+9,-30,-168)
    ・サイズ情報テーブル size
    n,type,size,length,width
    1,'foo','S',15,40
    2,'foo','M',20,45
    3,'foo','L',25,50
    4,'bar','L',24,52
    5,'bar','XL',28,58
    6,'bar','XXL',32,64

    ・商品情報テーブル item
    n,type,name,info
    1,'foo','ふー','フーな感じです。'
    2,'bar','ばー','バーな感じです。'

    かなりシンプルにしましたが、
    テーブルのイメージとしてはこんな感じです。

    ここからsize.lengthで検索し、
    一致したtypeの商品情報と他のサイズの情報を取り出したいのです。

    良い設計あるいは最適な取り出し方について事例を知っていれば
    教えて頂けると嬉しいです。
    967 : 964 - 2008/06/07(土) 11:26:12 ID:??? (+5,-29,-37)
    >>965
    すいません、入れ違いました。
    ご回答ありがとうございます。
    ただ、>>966のようなイメージなのです。

    >>965だと、barのLに関するdress, info情報は返ってきますが、
    同時に(同時じゃなくてもいいですが)、barのLLとXLのdress情報も欲しいのです。
    968 : NAME IS - 2008/06/07(土) 11:30:15 ID:??? (+16,-30,-164)
    サブクエリ exists の定番。

    試してないけど
    select distinct I.type,I.name,S.size,S.length,S.width from item as I left join size as S using(type)
    where exists (select X.type from size as X where (X.size = 'M' and X.length= 15 and X.type = I.type);
    970 : NAME IS - 2008/06/07(土) 11:56:22 ID:??? (+10,-30,-273)
    >>968
    ありがとうございます。
    非常に参考になります。
    かなり欲しい結果に近い部分を得られました。

    select distinct I.type,I.name,S.size,S.length,S.width from item as I left join size as S using(type)
    where exists (select X.type from size as X where (X.length=15 and X.type=I.type));
    で、fooのsize「S」が一致し、fooの全ての情報が取り出せました。

    これに、X.length=15にあてはまるS.sizeがどれなのかも合わせて欲しいのです。
    やはり、その場合は2回クエリを投げる必要がありますか?

    実際のテーブルは規模がもっと大きいので、
    検索結果が100件あるとすると、
    ひとつのリクエストなのに1+100回クエリを投げないといけなくなり、
    どうにか上手にまとめられればと思います。
    971 : 964 - 2008/06/07(土) 12:03:39 ID:??? (+5,-29,-118)
    すいません。>>970は私です。

    よく考えると、>>968さんのクエリと、
    通常のサイズ検索クエリ(select size from size where length=15;など)の2回やれば、
    欲しい結果が全て得られることが分かりました。
    1回では不可能な気がするので、現状最善の方法が見つかりました。

    これでどうにかなりそうです。
    大変勉強になりました。ありがとうございます。
    972 : NAME IS - 2008/06/07(土) 20:56:12 ID:??? (-17,-29,-12)
    >>969
    GUI tools
    973 : NAME IS - 2008/06/08(日) 09:11:08 ID:??? (+63,-30,-150)
    configureについて質問です。ターゲットのプラットホームは Windows XP Pro SP3 で、
    mysql-5.1.24-rc-win32.zip をダウンロード&解凍し、インストール自体は問題無くできたのですが、
    その後に行う Server Instance Config Wizard の最後のでエラーとなってしまいます。

    (恐らく、推測、妄想…)パスワードを設定したのにも関わらず、
    パスワードなしでログインしようとしてエラーになっているのでしょうか?だとしたら、バグ?

    結局、この最後に行う "Apply Security Settings" って何を行うのでしょうか?
    974 : NAME IS - 2008/06/08(日) 13:16:18 ID:??? (+47,-29,-38)
    mysql5で最初から作られている
    information_schema
    っていうデータベースって削除してよい?
    本家の解説読んでもイマイチワカランカッタ
    975 : NAME IS - 2008/06/08(日) 13:42:57 ID:??? (-1,-29,-7)
    manual 29.7.5 には、「触るな」と書いてあるが。
    976 : NAME IS - 2008/06/09(月) 02:47:03 ID:??? (+62,+29,-11)
    >>974
    それVIEWみたいなもんだろ。
    各テーブルの情報がテーブルっぽく見えてるだけのような。
    消す意味が分からん。
    977 : NAME IS - 2008/06/09(月) 02:54:10 ID:??? (+13,-19,-15)
    >>974
    おまいは testデータベースも残しておけ
    978 : NAME IS - 2008/06/09(月) 22:10:35 ID:??? (+9,-29,-50)
    >>974
    information_schemaはRDBMSにとって必須なものだよ。
    Windowsのレジストリってよくわからない設定しか書いてないから
    消してよい?って言ってるようなもん。
    つまり、「それを消すなんてとんでもない。」
    979 : NAME IS - 2008/06/10(火) 01:29:46 ID:??? (+3,-29,-41)
    CREATE VIEW v AS SELECT * FROM t;
    みたいにしてビューを作ると「*」が展開された形で作成されてしまい、
    元のテーブルtのカラムが増減したときビューを作り直さなければならない
    のですが、「*」を展開しない状態でビューを作ることはできないのでしょうか?
    981 : NAME IS - 2008/06/10(火) 08:33:45 ID:??? (-6,-30,-201)
    >>980
    そうゆうのは、本番環境に投入する前にベンチなりとっとくもんじゃね?
    それに、当然CPU,Memにもよるだろうし、ほかのプロセス(httddとかphpとか)状況にもよるし、
    なにより、どんなクエリが発行されるかによって、(同一ハード環境でも)はっきり言って100倍違う。

    ちなみにウチの環境だと、
    cpu Core Duo 2.0Ghz Men 1GB で、
    ごく軽いクエリをmysqldが100%cpu使って20000/s以上出るけど、
    ちょっと複雑なクエリにすると、途端に1000/s位になるし、
    Apache + mod_perl で実環境に近い状態でやると250/s位。
    だからウチの場合ではその近辺まではなんも手ぇ打たんでいいかなと判断してる。(現状 20-25/s位で推移してるし)

    もちろんこれはウチの環境に限っての話であって、これらの数値は全く意味をなさないけど。
    サーバマシンの構成やデータ量、どんなクエリ投げてるかは、君しか知らんから、一概にいくらとは言えないよ。
    983 : NAME IS - 2008/06/10(火) 12:42:51 ID:??? (+13,-29,-34)
    linuxにてシェルスクリプトでデータベースやテーブルの雛形構成を
    作りたいと思っているのですが、手動なら>mysql 起動後に
    SQLを打ち込んでいますが、スクリプトからの場合はどのような
    方法が良いでしょうか?
    984 : 983 - 2008/06/10(火) 13:45:11 ID:??? (-1,-29,-41)
    すみません、自己解決しました。
    テキストファイルにコマンド列記し、
    mysql -u root < hoge.txt でいけました。失礼しました。
    985 : NAME IS - 2008/06/10(火) 14:13:38 ID:??? (+8,-29,-15)
    mysqldumpで 指定したフォルダに保存したい場合は
    どうすればいいんでしょうか?
    教えて下さい。
    986 : 985 - 2008/06/10(火) 14:49:42 ID:??? (+7,-20,-12)
    自己解決致しました。
    申し訳ありませんでした。
    987 : 973 - 2008/06/10(火) 16:40:12 ID:??? (+57,+29,-22)
    ひょっとして、この現象に見舞われてるのは俺だけなのか?
    988 : NAME IS - 2008/06/10(火) 17:11:57 ID:??? (+52,+29,-2)
    いきなりバグ呼ばわりは無視される。
    989 : NAME IS - 2008/06/10(火) 23:19:32 ID:??? (+39,+11,-11)
    って言うか、これはバグだろ。俺の方でも起こるし。5.0 使えばいい
    990 : NAME IS - 2008/06/11(水) 08:29:18 ID:??? (+18,-29,-26)
    windowsのコマンドプロンプトで

    > mysql

    > mysqladmin

    はどう違うんでしょうか?
    991 : NAME IS - 2008/06/11(水) 09:22:08 ID:??? (+2,-29,-36)
    administrator(管理者権限)で入るか入らないかの違い。
    992 : 990 - 2008/06/11(水) 11:27:50 ID:??? (-1,-29,-22)
    >>991
    レスありがとうございます。
    では、administratorとrootはどう違うんでしょうか?
    993 : NAME IS - 2008/06/11(水) 11:43:52 ID:??? (+32,-29,-18)
    root ってのは、単なるアカウント(ユーザー) 名。
    994 : NAME IS - 2008/06/11(水) 11:56:36 ID:??? (+67,+9,-3)
    linuxやった方がいいのでは?
    995 : 990 - 2008/06/11(水) 14:23:51 ID:??? (+65,+29,-32)
    >>993
    なるほど。よくわかりました。ありがとうございます。

    >>994
    あまりリナックスはさわったことないので挑戦してみます!
    996 : NAME IS - 2008/06/11(水) 14:38:12 ID:??? (+3,-30,-85)
    http://dev.mysql.com/doc/
    PHP の Windows Help に続き、↑の Japanese v5.1 の CHM の Windows HTML Help ファイルでも、
    キーワード部分が文字化けしてたので、修正した。ヘルププロジェクトファイルとコンテンツファイルをちょびっと弄った。

    欲しい人はどうぞ
    http://toku.xdisc.net/Sn2/up3/www/re2467.zip.html
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - 1064 + - limit + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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