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

    元スレMySQL 総合 Part19

    mysql覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    901 = :

    >>894
    ぐぐれカスと言わざるを得ない

    902 = :

    >>901
    ググらなくてもエラー見ればどこを直せばいいかはわかるという・・・

    903 = :

    でも英和辞典が必要だけどね!

    904 = :

    >>903
    この程度の英語で辞書とか釣りだろ?

    905 = :

    >>904
    自分が英語がわかるのを自慢したいのか?
    それともわからないのにカッコつけてるだけか?

    906 = :

    >>905
    いやまじで、あの程度の英語を毎回辞書で調べてたらプログラミングなんかできなくね?
    エラーも全部英語だし。

    それにしても、日本人はほんまに英語できんのやなぁ。英語=自慢とか。

    907 = :

    >>896
    'とか"で囲って無理だったので諦めてました、無知でした。
    ありがとうございます!

    カラム名変えてます。

    908 = :

    まるで他人ごとだなw
    在日乙

    909 = :

    質問です。phpからの操作になりますが、
    id varchar(8), a00001 boolean, a00002 boolean・・・みたいなテーブルがあります
    (フィールドの数字は飛び飛びです、boolean型のフィールドは数百あります)
    ここでinsert文で特定の項目にだけ情報を入れることはできますか?
    例えばa00100とa00300にだけtrueを入れて、後は全部falseみたいな時に(idにも適切な値を入れる)
    どのようにinsert文を作るのがよいでしょうか?
    「このフィールド名を持つフィールドは前から何番目か」というのがわかれば、php側でなんとかできそうですが・・・

    910 = :

    >>909
    INSERT INTO unko SET hoge=1;
    という話?

    911 = :

    >>910
    うおー、今までvalues(ごちゃごちゃ);って書き方しか知りませんでした
    勉強になりました、解決しました、ありがとうございます!

    912 = :

    tinkoとかunkoとか下品な言葉を使うのは止めてください。

    913 = :

    バッククォートってキーボードでどうやって入力すればいいのでしょうか。

    915 = :

    どのキーを押せば出るのでしょうか。

    917 = :

    ‘ ←こんなのが表示されましたが、これでいいのでしょうか。

    920 = :

    mysqlが起動するmysqldの優先度(nice)を、
    いつも -1 に固定するような設定を、
    /etc/security/limits.conf でできませんか?
    MySQL 5.1や5.5では、my.cnf にて nice=-1 とすれよかったのですが、
    MariaDB(5.2.6使用ですが, これに限らす) ではこれが機能しないのです。
    よろしくお願いします。

    921 = :

    mysqldumpの書き方で質問です。
    特定のテーブルのみを指定したくて、以下のように書きました。

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

    しかし、バックアップファイルは出来ません。
    テーブル名にワイルドカードを指定できないのでしょうか?

    922 = :

    >>921
    自分で実際にやってできないのにどうしてできると思うんだ?

    923 = :

    /var/lib/mysqlを丸ごとコピーすればバックアップできると思うのですが、
    敢えてmysqldumpを選ぶ理由って何かあるのでしょうか?

    924 = :

    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 = :

    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 = :

    コストがかかってしまいましたか。
    なるほど、勉強になりました。

    927 = :

    >>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 = :

    >>923
    1つのファイルに収まる、圧縮して容量も劇的に減らして残しておける。
    あとはDB全体をリストアするなど。
    (mysqldump→全データベース削除、関連ファイル初期化→インポートしたらまっさらな状態からテーブルが作られる)

    929 = :

    なるほどね…。
    このケースだとそのような疑問がでるのか…。
    ご報告ありがおう。
    色々と勉強になりました。

    930 = :

    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;

    だと何か問題あるのか

    932 = :

    >>922
    「出来る方法があるのではないか?と思って質問した次第です・・。

    データベース内にいくつもテーブルを作っているケースってあるでしょうし、
    必要なテーブル名を全て列挙するのも面倒と思いまして。
    それしか方法がないなら納得しますが、他に方法はあるのではないか?
    自分が知らない事があれば教えて欲しい。そう思って質問しました。

    933 = :

    バッククォートってキーボードでどうやって入力すればいいのでしょうか。
    Shift+@
    と昨日教わりましたが、

    このように表示されてしまいます。
    なお、IMEはPCに入っていたものを使っています。

    935 = :

    IMEを切れとのことですが、切るとはどのような行為を示していますか?
    切るとハゲに関係があるのかしらん?

    936 = :

    つまらない事聞きますけど、「PC用」「携帯用」とフィールドを分けるとき、
    どういうフィールド名にしていますか?
    電話番号の場合、telはPC用として、携帯はmobile_tel?ktai_tel?

    937 = :

    サーバのバージョン: 5.1.44-community
    MySQL クライアントのバージョン: mysqlnd 5.0.5-dev

    とかいうときMySQL Connector Netはどのバージョンをインストールしたらいいのでしょうか?

    938 = :

    >>930

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

    大変助かりました。本当にありがとうございます!

    939 = :

    >>936
    好きなようにしたら?としかいいようがないけどw


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

    DB設計を語るスレ 3
    http://hibari.2ch.net/test/read.cgi/db/1269585561/l50

    940 :

    すみません。

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

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

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

    よろしくお願いします。

    942 = :

    >>941
    なんかオプションをつけるとだいたいインデックスがつく

    943 = :

    主キーにはインデックスをはらなくてもって、
    主キーこそがインデックスだと思うんだが、
    自分の認識間違ってるのか。

    944 = :

    >>943
    お前の場合は人生そのものが間違いだ

    945 = :

    お次の質問どうぞ。

    946 = :

    正規化によって繰り返し項目を別表に分けた後は、どのように結合すればよいでしょうか??
    SQL文を2つに分けたら解決しますが、1つで出来ないでしょうか?

    table1
    id,table2id,name

    table2
    id,data

    table1id name data1 data2...
    1 'abc' 'abcの趣味1' 'abcの趣味2'...

    947 = :

    >>937

    Connector/Net, Connector/Jはクライアントライブラリ使わないので、サーバ側にあわせて何でもよいよ。
    サーバ側5.1ならConnector/Netの最新版(6.3.6)でいいんじゃね?

    950 = :

    基本的には複数行で取得するのが一般的だな。
    どのみち「abcの趣味」が複数あるわけだからプログラム側でうまく処理すればいい。


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

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


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