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

    私的良スレ書庫

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

    元スレMySQL 総合 Part19

    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
    901 : NAME IS - 2011/06/01(水) 23:22:56.85 ID:??? (+85,+29,-11)
    >>894
    ぐぐれカスと言わざるを得ない
    902 : NAME IS - 2011/06/02(木) 03:14:21.22 ID:??? (+69,+29,-8)
    >>901
    ググらなくてもエラー見ればどこを直せばいいかはわかるという・・・
    903 : NAME IS - 2011/06/02(木) 04:18:09.34 ID:??? (+84,+29,-14)
    でも英和辞典が必要だけどね!
    904 : NAME IS - 2011/06/02(木) 06:34:33.50 ID:??? (+100,+27,-8)
    >>903
    この程度の英語で辞書とか釣りだろ?
    905 : NAME IS - 2011/06/02(木) 11:25:29.85 ID:??? (+105,+29,-11)
    >>904
    自分が英語がわかるのを自慢したいのか?
    それともわからないのにカッコつけてるだけか?
    906 : NAME IS - 2011/06/02(木) 14:05:37.14 ID:??? (+72,+29,-53)
    >>905
    いやまじで、あの程度の英語を毎回辞書で調べてたらプログラミングなんかできなくね?
    エラーも全部英語だし。

    それにしても、日本人はほんまに英語できんのやなぁ。英語=自慢とか。
    907 : NAME IS - 2011/06/02(木) 14:51:14.54 ID:??? (+11,-22,-6)
    >>896
    'とか"で囲って無理だったので諦めてました、無知でした。
    ありがとうございます!

    カラム名変えてます。
    908 : NAME IS - 2011/06/02(木) 14:57:53.37 ID:??? (+2,+29,-14)
    まるで他人ごとだなw
    在日乙
    909 : NAME IS - 2011/06/02(木) 19:04:48.10 ID:??? (+7,-30,-136)
    質問です。phpからの操作になりますが、
    id varchar(8), a00001 boolean, a00002 boolean・・・みたいなテーブルがあります
    (フィールドの数字は飛び飛びです、boolean型のフィールドは数百あります)
    ここでinsert文で特定の項目にだけ情報を入れることはできますか?
    例えばa00100とa00300にだけtrueを入れて、後は全部falseみたいな時に(idにも適切な値を入れる)
    どのようにinsert文を作るのがよいでしょうか?
    「このフィールド名を持つフィールドは前から何番目か」というのがわかれば、php側でなんとかできそうですが・・・
    910 : NAME IS - 2011/06/02(木) 19:10:39.72 ID:??? (+7,-30,-18)
    >>909
    INSERT INTO unko SET hoge=1;
    という話?
    911 : NAME IS - 2011/06/02(木) 19:39:13.69 ID:??? (+7,-21,-19)
    >>910
    うおー、今までvalues(ごちゃごちゃ);って書き方しか知りませんでした
    勉強になりました、解決しました、ありがとうございます!
    912 : NAME IS - 2011/06/02(木) 21:36:48.40 ID:??? (+7,-20,-5)
    tinkoとかunkoとか下品な言葉を使うのは止めてください。
    913 : NAME IS - 2011/06/02(木) 21:38:19.45 ID:??? (+1,-28,-16)
    バッククォートってキーボードでどうやって入力すればいいのでしょうか。
    914 : NAME IS - 2011/06/02(木) 21:46:49.57 ID:??? (-4,-22,+2)
    >>913
    `
    915 : NAME IS - 2011/06/02(木) 22:16:17.73 ID:??? (+41,+18,+0)
    どのキーを押せば出るのでしょうか。
    916 : NAME IS - 2011/06/02(木) 22:24:32.30 ID:??? (-6,-29,+0)
    Shift+@

    ちったぁggr
    917 : NAME IS - 2011/06/02(木) 23:14:49.54 ID:??? (+1,-26,+0)
    ‘ ←こんなのが表示されましたが、これでいいのでしょうか。
    918 : NAME IS - 2011/06/03(金) 00:29:19.88 ID:??? (-4,-27,-2)
    ゛←これじゃね?
    919 : NAME IS - 2011/06/03(金) 00:34:16.03 ID:??? (-1,-29,-1)
    (‘_ ‘ ) < んなわけねーだろ
    920 : NAME IS - 2011/06/03(金) 03:05:53.61 ID:??? (+3,-30,-73)
    mysqlが起動するmysqldの優先度(nice)を、
    いつも -1 に固定するような設定を、
    /etc/security/limits.conf でできませんか?
    MySQL 5.1や5.5では、my.cnf にて nice=-1 とすれよかったのですが、
    MariaDB(5.2.6使用ですが, これに限らす) ではこれが機能しないのです。
    よろしくお願いします。
    921 : NAME IS - 2011/06/03(金) 11:56:47.45 ID:??? (+46,-30,-89)
    mysqldumpの書き方で質問です。
    特定のテーブルのみを指定したくて、以下のように書きました。

    mysqldump --host=localhost -- user=ユーザ名 --password=パスワード DB名 user* admin* | gzip > ファイル名.gz

    しかし、バックアップファイルは出来ません。
    テーブル名にワイルドカードを指定できないのでしょうか?
    922 : NAME IS - 2011/06/03(金) 14:33:26.16 ID:??? (+99,+29,-5)
    >>921
    自分で実際にやってできないのにどうしてできると思うんだ?
    923 : NAME IS - 2011/06/03(金) 17:11:14.18 ID:??? (+8,-29,-32)
    /var/lib/mysqlを丸ごとコピーすればバックアップできると思うのですが、
    敢えてmysqldumpを選ぶ理由って何かあるのでしょうか?
    924 : NAME IS - 2011/06/03(金) 19:16:20.89 ID:??? (+9,-30,-222)
    MySQLのSQLで質問があります。
    回答して頂ける方が居られれば、宜しくお願いします。

    下記の3つのテーブルがあり、itemごとに複数のcotegoryを設定できるため、
    rel_item_categoryでitemとcategoryを紐付けています。
    レコード数はdat_itemが5万行、dat_categoryが20行、rel_item_categoryが15万行です。

    dat_item
    - item_id
    - price
    - date

    dat_category
    - category_id
    - name

    rel_item_category
    - item_id
    - category_id
    925 : NAME IS - 2011/06/03(金) 19:18:51.01 ID:??? (+9,-30,-246)
    category_idが1かつdateが指定日時以下のitemをpriceでソートして取得したいため、
    下記のクエリを発行しました。

    SELECT dat.*
    FROM dat_item AS dat
    INNER JOIN(SELECT item_id FROM rel_item_category WHERE category_id = '1' GROUP BY item_id) AS rel
    ON dat.item_id = rel.item_id
    WHERE dat.date < '2011-06-03 02:21:00'
    ORDER BY dat.price

    意図した結果が取得できますが、
    EXPLAINで確認したところ、Using temporary; Using filesortになっており、
    relとdatが結合したあとでソートされているようで、非常にコストがかかっています。
    926 : NAME IS - 2011/06/03(金) 19:20:12.91 ID:??? (+57,+29,-2)
    コストがかかってしまいましたか。
    なるほど、勉強になりました。
    927 : NAME IS - 2011/06/03(金) 19:21:42.00 ID:??? (+4,-30,-261)
    >>924 >>925 の続きです。

    SELECT item_id FROM rel_item_category WHERE category_id = '1' GROUP BY item_id
    この結果のテーブルrel_item_category_1をつくり、下記クエリを発行したところ
    結合前のdat_itemでインデックスを使用してソートできました。

    SELECT dat.*
    FROM dat_item AS dat
    INNER JOIN rel_item_category_1 AS rel
    ON dat.item_id = rel.item_id
    WHERE dat.date < '2011-06-03 02:21:00'
    ORDER BY dat.price

    最初に提示した3つテーブルだけで
    「category_idが1かつdateが指定日時以下のitemをpriceでソートして取得」を高速に行うことはできないのでしょうか?
    928 : NAME IS - 2011/06/03(金) 19:22:01.98 ID:??? (+3,-29,-29)
    >>923
    1つのファイルに収まる、圧縮して容量も劇的に減らして残しておける。
    あとはDB全体をリストアするなど。
    (mysqldump→全データベース削除、関連ファイル初期化→インポートしたらまっさらな状態からテーブルが作られる)
    929 : NAME IS - 2011/06/03(金) 19:23:22.73 ID:??? (+57,+29,-18)
    なるほどね…。
    このケースだとそのような疑問がでるのか…。
    ご報告ありがおう。
    色々と勉強になりました。
    930 : NAME IS - 2011/06/03(金) 20:45:09.03 ID:??? (+9,-30,-85)
    SELECT dat.*
    FROM dat_item dat
    INNER JOIN rel_item_category rel ON dat.item_id = rel.item_id
    WHERE rel.category_id = '1'
    AND dat.date < '2011-06-03 02:21:00'
    ORDER BY dat.price;

    だと何か問題あるのか
    931 : NAME IS - 2011/06/03(金) 20:46:48.89 ID:??? (+0,-29,-19)
    >>923
    丸ごとコピーは原則mysqldを停止しないとダメ
    mysqldumpはmysqldを動かしたままとれる
    932 : 921 - 2011/06/03(金) 22:06:46.31 ID:??? (+76,+30,-73)
    >>922
    「出来る方法があるのではないか?と思って質問した次第です・・。

    データベース内にいくつもテーブルを作っているケースってあるでしょうし、
    必要なテーブル名を全て列挙するのも面倒と思いまして。
    それしか方法がないなら納得しますが、他に方法はあるのではないか?
    自分が知らない事があれば教えて欲しい。そう思って質問しました。
    933 : NAME IS - 2011/06/03(金) 22:16:16.99 ID:??? (+3,-29,-39)
    バッククォートってキーボードでどうやって入力すればいいのでしょうか。
    Shift+@
    と昨日教わりましたが、

    このように表示されてしまいます。
    なお、IMEはPCに入っていたものを使っています。
    934 : NAME IS - 2011/06/03(金) 23:00:33.28 ID:??? (-1,-29,-9)
    ` ←Shift + @
    ‘ ←IME on で Shift + @

    結論:IME切れ、ハゲ
    935 : NAME IS - 2011/06/03(金) 23:02:10.29 ID:??? (+57,+29,-29)
    IMEを切れとのことですが、切るとはどのような行為を示していますか?
    切るとハゲに関係があるのかしらん?
    936 : NAME IS - 2011/06/03(金) 23:43:40.88 ID:??? (+6,-29,-60)
    つまらない事聞きますけど、「PC用」「携帯用」とフィールドを分けるとき、
    どういうフィールド名にしていますか?
    電話番号の場合、telはPC用として、携帯はmobile_tel?ktai_tel?
    937 : NAME IS - 2011/06/04(土) 00:47:10.59 ID:??? (+9,-30,-80)
    サーバのバージョン: 5.1.44-community
    MySQL クライアントのバージョン: mysqlnd 5.0.5-dev

    とかいうときMySQL Connector Netはどのバージョンをインストールしたらいいのでしょうか?
    938 : NAME IS - 2011/06/04(土) 00:53:49.98 ID:??? (+3,-29,-37)
    >>930

    そのSQLでUSE INDEXでdateとpriceの複合インデックスを指定するか、
    WHERE句にprice>0を追加することで、インデックスを使ったソートが出来ました。

    大変助かりました。本当にありがとうございます!
    939 : NAME IS - 2011/06/04(土) 10:00:57.58 ID:??? (+8,+29,-19)
    >>936
    好きなようにしたら?としかいいようがないけどw


    そういう事は↓で話ししたほうが宜しいのでは?

    DB設計を語るスレ 3
    http://hibari.2ch.net/test/read.cgi/db/1269585561/l50
    940 : NAME IS - 2011/06/04(土) 11:23:45.20 ID:m9IbrQpl (+54,+29,-46)
    すみません。

    http://www.inter-office.co.jp/contents/170/
    こちらの記事を見たのですが、

    InnoDBについて一番大事なことは主キーがクラスターインデックスだということです。

    とのことで、
    InnoDBであれば、主キーにはインデックスを設定しなくても、
    勝手にクラスターインデックスが付いてインデックスを使った検索ができるという認識でいいのでしょうか。

    よろしくお願いします。
    941 : NAME IS - 2011/06/04(土) 11:35:47.08 ID:m9IbrQpl (+74,+29,-86)
    >>940

    の続きです。
    外部キーについても、

    主キー制約 ・・・一意なインデックスを生成する
    外部キー制約・・・インデックスを生成する
    一意制約 ・・・一意なインデックスを生成する
    http://wiki.minaco.net/index.php?MySQL%2F%E5%88%B6%E7%B4%84

    とのことで、
    制約を付けた時点でインデックスが設定されているということでいいのでしょうか。

    度々すみませんがよろしくお願い致します。
    942 : NAME IS - 2011/06/04(土) 14:16:55.14 ID:??? (+67,+29,-4)
    >>941
    なんかオプションをつけるとだいたいインデックスがつく
    943 : NAME IS - 2011/06/04(土) 16:12:35.39 ID:??? (+91,+29,-13)
    主キーにはインデックスをはらなくてもって、
    主キーこそがインデックスだと思うんだが、
    自分の認識間違ってるのか。
    944 : NAME IS - 2011/06/04(土) 22:24:29.98 ID:??? (+70,+29,-1)
    >>943
    お前の場合は人生そのものが間違いだ
    945 : 忍法帖【Lv= - 2011/06/05(日) 00:53:12.69 ID:??? (+50,+27,+0)
    お次の質問どうぞ。
    946 : NAME IS - 2011/06/06(月) 00:22:49.46 ID:??? (+4,-30,-153)
    正規化によって繰り返し項目を別表に分けた後は、どのように結合すればよいでしょうか??
    SQL文を2つに分けたら解決しますが、1つで出来ないでしょうか?

    table1
    id,table2id,name

    table2
    id,data

    table1id name data1 data2...
    1 'abc' 'abcの趣味1' 'abcの趣味2'...
    947 : NAME IS - 2011/06/06(月) 00:25:10.23 ID:??? (+4,-30,-84)
    >>937

    Connector/Net, Connector/Jはクライアントライブラリ使わないので、サーバ側にあわせて何でもよいよ。
    サーバ側5.1ならConnector/Netの最新版(6.3.6)でいいんじゃね?
    948 : NAME IS - 2011/06/06(月) 01:26:21.99 ID:??? (-2,-29,-11)
    >>946
    left join
    949 : NAME IS - 2011/06/06(月) 02:55:19.06 ID:??? (-2,-29,-29)
    >>948
    ありがとうございます!
    結果も1行で取得したいのですが、不可能でしょうか?
    それともleft join等で複数行で取得するのが一般的でしょうか?
    950 : NAME IS - 2011/06/06(月) 02:58:38.79 ID:??? (+89,+29,-38)
    基本的には複数行で取得するのが一般的だな。
    どのみち「abcの趣味」が複数あるわけだからプログラム側でうまく処理すればいい。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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