sql >> データベース >  >> RDS >> Mysql

MySQLのトップ10のベストプラクティス

    MySQLは世界で二番目に最も広く使用されているオープンソースのリレーショナルデータベース管理システムです。それは、その一貫した高速パフォーマンス、高い信頼性と使いやすさでとても人気となっています。この記事では、プレゼントのMySQLのベストプラクティスをいくつか。

    MySQLの中のベストプラクティス

    <強い> 1。常に適切なデータ型を使用するを

    データの性質に基づいてデータ型を使用します。あなたは無関係なデータ型を使用する場合には、より多くのスペースを消費するか、エラーが発生する可能性があり
    例:。代わりにdatetimeデータ型のストア日付時刻値にはvarchar(20)を使用すると、日付時刻関連の計算中にエラーが発生するともあります無効なデータを記憶することが可能ケース。

    2。 VARCHARの上の使用のCHAR(1)(1)

    あなたの文字列の単一の文字、使用CHAR(1)の場合の代わりにVARCHAR(1)のためVARCHAR(1)店舗情報に余分なバイトがかかります。

    <強い> 3。唯一の固定長データを格納するために使用CHARデータ型を

    例:データの長さが1000未満であれば代わりにVARCHAR(1000)のCHAR(1000)を使用すると、より多くのスペースを消費する

    <強い> 4。 の地域の日付形式を使用しないでください

    あなたはDATETIMEまたはDATEデータ型を使用するとスーツあなたのSQLエンジンのことを常にYYYY-MM-DDの日付形式またはISO日付形式を使用します。 DD-MM-YYYのような他の周辺地域の形式は、MM-DD-YYYYが正しく保存されません。

    <強い> 5。索引キー列を

    で使用される列は、クエリが高速に結果を返すようにJOIN句インデックスに確認してください。
    あなたがより多くの1つのテーブルメイクよりも必ずテーブルを結合するために使用されているすべての列であることを必要とするUPDATEステートメントを使用している場合インデックス付き

    <強い> 6。インデックス列の上の機能を使用しないでください

    インデックス列上の機能を使用すると、インデックスの目的に反し。あなたは顧客コードの最初の2つの文字がAKであるデータ、ない書き込み
    左WHEREテーブルから列を選択します(customer_code、2)=「AK」しかしより高速な応答時間内のどの結果。

    インデックスを利用します「AK%」
    のようなテーブルcustomer_codeから列を選択

    <強い> 7。 SELECT *必要な場合にのみを使用

    やみくもにコードでSELECT *を使用しないでください。多くの列がテーブルにある場合、すべてはあなたがフロントエンド・アプリケーションに結果を送信する場合は特に、応答時間が遅くなる返されます。
    明示的に実際に必要とされているカラム名を入力します。

    <強い> 8。必要な場合にのみ使用ORDER BY句を

    あなたはフロントエンド・アプリケーションに結果を表示したい場合は、それが結果セットを注文してみましょう。 SQLでこれを行うと、マルチユーザー環境での応答時間が遅くなる場合があります。

    <強い> 9。 の適切なデータベースエンジンを選択します。

    あなたはより頻繁に(例:検索エンジンを)書くよりデータを読み込み、アプリケーションを開発する場合、MyISAMストレージエンジンを選択する
    あなたがより頻繁に(例:リアルタイムの銀行取引)を読み取るよりもデータの書き込みを行うアプリケーションを開発する場合、 InnoDBストレージエンジンを選択します。
    パフォーマンスに影響を及ぼします間違ったストレージエンジンを選択する

    <強い> 10。 の必要な場所に使用することはEXISTS句を

    あなたがデータの存在を確認したい場合は、> 0
    代わりに、使用があれば/> もし使用しないでください
    より速い応答時間である(表COL ='何らかの値' SELECT * FROM)が存在する。


    1. 2つの日付列から日付範囲を生成する

    2. GROUP_BYの2つのLEFTJOINのGROUP_CONCATからの奇妙な重複動作

    3. MariaDBでのIFNULL()のしくみ

    4. 高可用性のためのMariaDBレプリケーションのデプロイ