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

    私的良スレ書庫

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

    元スレMySQL 総合 Part25

    mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    51 : NAME IS - 2015/04/05(日) 01:08:38.60 ID:???.net (+20,-30,-59)
    >>50
    月ごとだよね?
    SELECT YEAR(access_datetime), MONTH(access_datetime), COUNT(*)
    FROM access_log
    GROUP BY YEAR(access_datetime), MONTH(access_datetime);
    52 : NAME IS - 2015/04/05(日) 01:17:15.61 ID:???.net (+46,+20,+2)
    >>51
    サンキュー!!!!!
    53 : NAME IS - 2015/04/06(月) 16:52:40.60 ID:???.net (+14,-30,-185)
    カテゴリごとのリストページをページングしたいです。

    SELECT c_id, c_name, c_spec FROM t_item WHERE c_category = '日本製' ORDER BY c_id DESC LIMIT 61, 60;

    offsetを使うと余計なレコードまで取得するので遅くなるとの事です。どのように書けばoffsetを使わずに同じ結果を取得出来るでしょうか?

    c_categoryで抽出してc_idで降順に並べ替えた後に新しく連番を振り直す事が出来れば比較演算子(?)を使って解決出来そうな気がするのですがその手段がわかりません。

    よろしくお願いします。
    54 : NAME IS - 2015/04/07(火) 00:13:14.33 ID:N0S4+fvx/ (+41,+29,-2)
    こんばんは。
    >>5
    の質問について教えていただけると嬉しいです。
    よろしくお願いします。
    55 : NAME IS - 2015/04/07(火) 08:30:28.88 ID:???.net (+18,-15,-5)
    >>53
    c_id がユニークなら
    並び替えだけじゃなく読み飛ばしたい行の切り捨てにも使えるよね
    56 : NAME IS - 2015/04/07(火) 08:50:09.64 ID:???.net (+7,-29,-18)
    >>55
    c_idはユニークな連番の数字です。
    それだと方法があるのですか?
    57 : NAME IS - 2015/04/07(火) 10:55:23.85 ID:???.net (+9,-30,+0)
    INSERT ~ ON DUPLICATE KEY UPDATE や、REPLACEを使って、
    ・無ければINSERT
    ・有れば「とある条件の場合」「まるごと」UPDATE
    について考えています
    以下、「無ければINSERT」「datetimeが更新されていたらUPDATE」とする例ですが、

    INSERT INTO test_table
    ( unique_key, column_a, column_b, datetime )
    VALUES
    ( 1, 100, 200, '2015-04-01 00:00:00' )
    ON DUPLICATE KEY UPDATE
    column_a = (
    CASE WHEN datetime < VALUES(datetime) THEN VALUES(column_a)
    ELSE column_a END),
    column_b = (
    CASE WHEN datetime < VALUES(datetime) THEN VALUES(column_b)
    ELSE column_b END),
    datetime = (
    CASE WHEN datetime < VALUES(datetime) THEN VALUES(datetime)
    ELSE datetime END)

    これでも動くのですが、「CASEの判定条件が同じ」「全部VALUESの値で更新」と
    なってるのでもっと綺麗なSQLはないかなーと思ってるんですがありませんかね?
    (実際はもっとカラムや条件が多くさらに長ったらしくなるので・・・)
    58 : NAME IS - 2015/04/08(水) 17:41:56.86 ID:???.net (+47,-30,-97)
    >>56
    SELECT * FROM t ORDER BY id LIMIT 20 OFFSET 60

    SELECT * FROM t WHERE id > 60 ORDER BY id LIMIT 20

    任意のページには直接飛べない(Nページ目の1番目に来るidが判らない)から
    事前にキャッシュを作るなりしてね

    >>57
    INSERT INTO ...
    SELECT (ここを考えて)
    ON DUPLICATE KEY UPDATE ...

    で条件は一か所にまとめられるけど、あまり見やすくはないかな
    59 : 54 - 2015/04/11(土) 09:03:55.25 ID:???.net (+89,+29,-18)
    >>58
    遅くなりましたがありがとうございます
    まだイマイチ理解できていないので色々試してみます
    60 : NAME IS - 2015/04/12(日) 18:52:29.05 ID:???.net (+12,-29,-101)
    >>59
    >>58の読み飛ばしは、
    1ページあたり60件表示でかつ、order by c_id ASCである場合は、
    c_idの小さいほうから 60*(ページ番号 - 1) 件は、間違いなく不要となるため
    切り捨てることができるという考えかなと。

    ただ、c_id DESC だし、データ内容や抽出条件次第で、
    たとえば21ページ目を表示するにあたって1200件はじいたところで
    焼け石に水になるのは目に見えてるので採用しなくていいと思う。

    まずは適切なインデックスを作成することからはじめてみては。
    62 : NAME IS - 2015/04/23(木) 17:52:48.81 ID:???.net (+104,+29,-99)
    PHP5.4+MySQL5.5を使ってます
    ユーザーの入力した個人情報を暗号化して保存しようと思うのですが、
    どのようなデータ型にすればいいでしょうか?

    例えば住所なんかは文字数が長くなることが容易に想定できるので、
    それを暗号化して更に文字数が増え、DBに設定したカラムの長さを超えてしまい復号化できなくなる心配があります
    可変的な文字列を保存するカラムにしたいのですが、皆様はどういう風に作られていますでしょうか?
    63 : NAME IS - 2015/04/23(木) 18:00:05.49 ID:???.net (+99,+29,-75)
    別に住所が暗号化されてる必要もないとは思うけど
    長さはTEXT型にしとけば問題ないじゃない。
    検索とか困らない?

    個人情報って特定の個人に結びついてる情報が問題なんだから
    個人が特定されなけりゃいいんでないの?
    64 : 59 - 2015/04/23(木) 18:12:02.12 ID:???.net (+76,+29,-111)
    >>63
    ありがとうございます、検索する予定は今のところないのでTEXT型にしてみます


    >個人情報って特定の個人に結びついてる情報が問題なんだから
    >個人が特定されなけりゃいいんでないの?
    住所はそこに住んでる人がわかってしまうので個人情報だと思ったのですが、違うんですか?
    そうであれば電話番号とかも暗号化して保存する必要はないんですかね?
    65 : NAME IS - 2015/04/23(木) 18:18:08.63 ID:???.net (+57,+29,-25)
    誰にでも見える場所に置くの?
    それなら暗号化は必要かな。
    66 : 59 - 2015/04/23(木) 18:24:24.59 ID:???.net (+57,+29,-73)
    いえ、万が一の話ですがハッキング等によってDBが流出した場合を想定してのリスクヘッジです
    みなさんがどのようにされてるか気になったのでそこも合わせて質問させていただきました
    67 : NAME IS - 2015/04/23(木) 18:31:19.39 ID:???.net (+57,+29,-30)
    プロはどうしてるんだろうね?
    自分も同じく初心者だから、エンコードして格納しておけばいいのかな?程度だよね。
    たしかに検索するとき不便になっちゃうね。
    68 : NAME IS - 2015/04/23(木) 19:24:12.39 ID:???.net (+91,+29,-52)
    報道されるような流出事件の場合、氏名や住所とかまで流出してるよね。
    つまり、それらは暗号化してないことが多いのでは。
    もちろん、パスワードは暗号化するのが一般的だろうけど。
    69 : NAME IS - 2015/04/23(木) 19:25:23.73 ID:???.net (+125,+29,-58)
    暗号化にも復号可能な暗号化と復号不可能な暗号化があるのは理解してるの?
    パスワードは暗号化してもパスワードとして成立するけど
    氏名住所暗号化しちゃダメでしょ
    70 : NAME IS - 2015/04/24(金) 10:21:20.92 ID:???.net (+52,+29,+0)
    やはりそういうものなんすね
    71 : NAME IS - 2015/04/24(金) 14:15:57.83 ID:???.net (+36,-29,-84)
    >氏名住所暗号化しちゃダメでしょ

    いやこれ復号可能な暗号化前提でしょ
    じゃないと保存する意味がない。それくらい読み取ろう

    で、暗号化はMySQL側でやる手もある
    AES_ENCRYPTならBlob型にすればおk
    更にHEXを使えば文字で扱えるがVARBINARYもアリ
    その場合は元の2倍くらいの長さを確保しておけば良い
    72 : NAME IS - 2015/04/24(金) 16:01:14.07 ID:???.net (+142,+29,-5)
    >>69
    分かって書いてると思うけど、複合不可のものは暗号とは言わないよ。MD5とか
    73 : NAME IS - 2015/04/24(金) 16:08:35.78 ID:???.net (+61,+29,-25)
    >>71
    復号可能な暗号化前提だとパスワードの暗号化って部分でおかしくなるんだよな
    74 : NAME IS - 2015/04/24(金) 20:58:08.53 ID:???.net (+70,+29,-24)
    >>68
    暗号化と言っても、ディスク、通信レイヤー、データベースファイル、アプリケーション‥‥どこに適用するかによって、守れるもの、守れないものがあるやね。
    75 : NAME IS - 2015/04/24(金) 23:58:08.58 ID:???.net (+69,+29,-5)
    >>72
    こいつバカだろ
    勉強しなおして来い
    76 : NAME IS - 2015/04/25(土) 00:00:16.10 ID:???.net (+91,+29,-35)
    59はパスワードなんて一言も言ってないのに、突然パスワードがーって言い出す低脳な奴がいるなw
    77 : NAME IS - 2015/04/27(月) 21:12:00.06 ID:???.net (+15,-16,+1)
    >>72
    ????
    78 : NAME IS - 2015/04/27(月) 21:21:02.97 ID:???.net (+57,+29,-18)
    結局、どれが一番プロの方からすると正しいんでしょうか?
    79 : NAME IS - 2015/04/27(月) 21:29:12.28 ID:???.net (+130,+29,-7)
    ハッシュ化だね

    この場合なら暗号化で意味通るけど
    80 : NAME IS - 2015/04/27(月) 21:43:13.44 ID:???.net (+70,+29,-3)
    >>79
    ハッシュ化で調べたたら有用な情報がぞろぞろ出てきたっす。
    ありがとうございます。
    81 : NAME IS - 2015/04/28(火) 02:11:50.11 ID:???.net (+57,+29,-7)
    不可逆な暗号ってなんだよと数年前にも話題になってたな
    82 : NAME IS - 2015/04/28(火) 16:33:26.26 ID:???.net (+57,+29,-27)
    個人情報など後で利用するものをハッシュ化するって・・・無知も程ほどにしておけ
    83 : NAME IS - 2015/04/28(火) 16:34:39.12 ID:???.net (+70,+29,-40)
    パスワードはハッシュ化して入力値と照らし合わせることができるが、
    >>76も言ってるがパスワードの話なんてしてないだろ
    84 : NAME IS - 2015/04/28(火) 16:41:40.26 ID:???.net (+79,+29,-47)
    >>72の流れで>>79書いたんだけど
    ややこしかったかな

    一つの質問から話が派生していくことなんてよくあると思うけど、頑なに>>62がそんな話してない!って言うのはどうして?
    85 : NAME IS - 2015/04/28(火) 20:16:37.04 ID:???.net (+74,+29,-6)
    >>69 があいまいな文章を書いたのがきっかけじゃないのかな
    86 : NAME IS - 2015/04/29(水) 21:32:40.84 ID:???.net (+83,+29,-46)
    ver 5.6.20です

    初歩的なんでしょうがちょっと教えて下さい。DBに誰が何時ログインし、どのデータベースにアクセスしたとかの追跡はバイナリログを設定し、
    そこから…になるんですか?
    別に深い意味は(今んところは)無いのですが
    87 : NAME IS - 2015/04/30(木) 00:13:34.03 ID:???.net (+75,-2,-51)
    >>86
    バイナリログではできない。
    一般クエリログならできるけどログが多すぎて現実的ではない。
    お金を払ってMySQLの商用版を買えばできる。
    http://www-jp.mysql.com/products/enterprise/audit.html
    88 : NAME IS - 2015/04/30(木) 16:03:30.53 ID:???.net (+68,+29,-26)
    >>87
    ありがとうございます。ログの種類について確認しなおさんといかんですね
    それにしても商用はやはりそれなりの価値があるんですねw
    89 : NAME IS - 2015/05/01(金) 00:47:08.06 ID:???.net (+9,-23,-19)
    5.6がなんもしなくてもメモリを300M使ってるんですが
    そういうもんですか?
    90 : NAME IS - 2015/05/01(金) 10:06:30.33 ID:???.net (-1,-29,-8)
    googleのmysql魔改造に関する論文ありますか?
    91 : NAME IS - 2015/05/01(金) 12:39:27.19 ID:???.net (+2,-30,-40)
    >>89
    5.6で機能強化されたPerformance Schemaがメモリをバカ食いするので、
    VPSなどメモリが少ない環境ではOFFにしてもよいかと。
    [mysqld]
    performance_schema = OFF
    92 : NAME IS - 2015/05/01(金) 20:54:39.50 ID:???.net (+57,+29,-2)
    ありがとうございます
    なんか気持ち悪かったんで
    94 : NAME IS - 2015/05/09(土) 10:26:32.26 ID:???.net (+21,-29,+0)
    >>93
    bind_address
    ただデフォルトでネットワーク待ち受けしてるはずだけど
    95 : NAME IS - 2015/05/09(土) 13:53:21.07 ID:???.net (+60,+29,-16)
    >>94
    ありがとう
    デフォルトで待ち受けしてたわ
    ファイアウォールで閉じてた
    96 : NAME IS - 2015/05/10(日) 17:00:54.40 ID:2UfCeeEm.net (+24,+29,-20)
    外部キー みたいに連携しているキーで、でも制約は無い状態のキーのことを
    なんと呼べばいいの? 外部キーでいい?
    97 : NAME IS - 2015/05/10(日) 20:39:10.92 ID:???.net (+56,+28,-3)
    制約のない外部キーってのがよくわからん
    98 : NAME IS - 2015/05/10(日) 21:47:54.65 ID:???.net (+91,+29,-17)
    制約があるから連携していると言えるんであってそれが無いんだったら単にカラムが一致してるってだけなんでは?
    99 : NAME IS - 2015/05/13(水) 17:57:46.39 ID:???.net (-1,-29,-62)
    workbenchの6.3.3、ファイルパスに日本語があると保存できなくない?
    6.2.4で修正済みになってるのに直ってないわこれ
    100 : NAME IS - 2015/05/14(木) 15:08:04.11 ID:???.net (+104,+29,-2)
    >>98
    連携はしてるけど制約はしてない状態。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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