MySQL はよく誤解されます

黄舟
黄舟オリジナル
2017-02-21 10:38:02981ブラウズ



MySQL はデータベースの主要な要素として、さまざまなシステムのあらゆる場所に存在していることは誰もがよく知っていると思います。ただし、使えることがわかったからといって、詳細を知っているわけではありません。そこで、楽しみのために、そして自分が足を踏み入れないようにするために、普段あまり気に留めていないいくつかのことを見直してみましょう。落とし穴。

免責事項: 詳細を知りたい場合は、ソースコードを読んでください。私にはその能力がないため、一方的な視点でしか話せません。

1. 大文字と小文字を区別しない (フィールド名)

MySQL クエリのフィールド名は大文字と小文字を区別しませんが、クエリの内容は大文字と小文字を区別するため、アンダースコアを使用して名前を付けることができる場合は、大文字と小文字を使用しないでください。名前は次のように区別されます。

    SELECT uid,v_state FROM all_user WHERE username = 'sunyue';
  1. SELECT uid,v_state FROM all_user WHERE USERNAME = 'sunyue' / /前のステートメントの結果は同じですが、フィールドは大文字と小文字を区別しません

  2. SELECT uid,v_state FROM all_user WHERE USERname = 'SUNYUE';マッチング ([_] は任意の文字に一致します)
  3. あいまいマッチングには少し規則的な意味がありますが、データベース内では通常のマッチングのように自由にマッチングすることはできません。できるだけ単純化するようにしてください。 (添付名詞: 全文検索スフィンクス)

SELECT uid,v_state FROM all_user WHERE USERNAME LIKE 'su_yue'; //アンダースコア [_] は任意の 1 文字と一致します

SELECT uid,v_state FROM all_user WHERE USERNAME LIKE 'su%yue'; //% は任意の数の文字に一致します

SELECT uid,v_state FROM all_user WHERE USERNAME NOT LIKE 'su%'; 3. 関数を推測する方法

    リレーショナル データベースである mysql は一般の開発者を対象としているため、すべてが可能な限り使いやすいものになっています。したがって、特定の関数が何であるかを知らなくても、推測できるかもしれません。関数によって他の人が推測できない場合、それは設計が失敗している可能性があります。 mysqlの場合、英語のレベルが少し高ければ、リレーショナルクエリの書き方を簡単に考えることができます。したがって、推測する能力はあなたの英語レベルに依存します、ははは! ! !
  1. 4. 文法に置き換えます
  2. replace into は非常に大雑把な挿入メソッドですが、適切なシナリオで使用することも必要です。たとえば、いつでも上書きする必要がある一部のデータには replace を使用する必要がありますが、一部の自動インクリメント テーブルの場合は使用する必要があります。 replace IDの無駄になり、replaceを使用する必要がない可能性があるため、使用は避けてください。

    5. Insert into on dumplicate key update構文

    この書き方は比較的穏やかですが、速度は明らかに遅いですが、この機能があるのは mysql だけだと言われています。挿入前にデータが既に存在するかどうかを確認したくない場合は、これが良い選択かもしれません。

    6. 構文の説明

    これは、クエリの効果を確認するための効果的な方法です。実際、私はこの関数をほとんど使用しません。しかし、開発者がこの関数を頻繁に使用するのであれば、その人は達人であると思います。 . 人々を解散させます。このコマンドを通じて、作成したステートメントが最適化されているかどうか、最適化されていない場合はどのような方向にあるのかを判断できます。使えば使うほど効果が分かるので、どんどん使っていきましょう!

    7. インデックスの長さ

    myisam の最大インデックス長は 1000 バイト、innodb の最大インデックス長は 767 バイトです。範囲を超えると期待値を超えてしまいますのでご注意ください。

    8. ライブラリのコピー

    1) mysql に付属のデータベースのバックアップと回復コマンドを直接使用します

    2) ファイルを宛先サーバーに直接コピーします (プロセス占有の問題に注意してください)。 3) 同期にツールを使用する; 個人的には 2 番目の方法が最も簡単だと思います。

    9. パーティショニング

    非常に大きいテーブルの場合、パーティショニング操作が必要な場合は、最初に少なくとも 1 つのパーティションを追加する必要があります。そうしないと、パーティショニングができなくなります。後で操作する予定。 (少なくとも私はそう思います)

    10. 遅いクエリ

    クエリが遅い、これはパフォーマンス監視の問題です。サーバーのパフォーマンスが低すぎると、トラブルシューティング時にそのような遅いクエリの記録が残り、トラブルシューティングがより効果的になります。

    11. Binlog

    binlog、この機能は一般的に使用され、データの回復、データ操作の記録などに非常に必要です。

    12. 知っておくべきその他のビュー、ストアド プロシージャ、イベント...

    これらは、多くのプロジェクトがまったく存在しないことがわかりました。関与しているプロジェクトはほとんどないか、関与しているとしても、他の人が何気なく行っているものです。ただし、高度な機能が役立つかどうかを理解する必要があります。

    13. 利用可能なツール

    phpMyAdmin は、データベースをリモートで安全に操作する方法としては依然として非常に優れていますが、インターフェースは古めかしく、ローカル操作としては少し不格好です。 navicat はまだ比較的便利ですが、よりプロフェッショナルですが、コマンド ラインを直接使用する人はいないと思いますが、コマンド ラインは基礎です。

    さらに深くする必要があることがたくさんあります。時間と能力があれば、ソースコードを詳しく調べてください。

    上記は、よく誤解されている MySQL の内容です。その他の関連内容については、PHP 中国語 Web サイト (www.php.cn) にご注意ください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。