SQLのヒント1注意してデータベースを設計するこの最初のヒントは明白だが、実際はそのほとんどのデータベースの問題がひどく設計されたテーブルの構造から来ています。私はそのようなクライアント情報と支払いが同じデータベースの列の情報などの情報を格納する人々を見てきました。その上で動作する必要がデータベースのシステムと開発者両方にとって、これは良いことではありません。データベースを作成するときは、常に、様々なテーブルに情報を置く明確な命名基準を使用して、プライマリを利用して2あなたが最適化すべきかを知っているあなたが特定のクエリを最適化する場合は、それはクエリの結果を詳細に調査を得ることができると非常に便利です。使用してEXPLAINの文を、あなたは以下の例に示すように、特定のクエリによって生成される結果に有用な情報の多くを得るでしょう。ref_table.key_column=other_table.column;3最速のクエリは...あなたが送信していないいずれかですあなたがデータベースにクエリを送信しているたびに、あなたのサーバのリソースのビットを使用している。これが理由です、高トラフィックの多いサイトで、あなたのデータベースをスピードアップするためにできる最善のことは、キャッシュのクエリにすることです。ご使用のサーバー上でクエリキャッシュを実装するソリューションがたくさん出ている。ここでいくつかは以下のとおりです。ADOdbは、PHPのデータベース抽象化ライブラリです。それはあなたが選択したデータベースのシステムをする(MySQL、PostgreSQL、Interbaseの、そして多くの方法で)使用することを可能にし、それは速度のために設計されています。ADODBは、シンプルでありながら強力なキャッシュシステムを提供します。最後に、ADODBは、あなたのプロジェクトで自由に使用できることを意味BSD、下でライセンスされています。LGPLライセンスでは、商用プロジェクトでも利用可能です。memcachedは:Memcachedは多くの場合、データベースの負荷を軽減することによって、動的なデータベース駆動型Webサイトを高速化するために使用される分散型メモリキャッシュシステムです。Cacheは、オープンソースのデータキャッシングインフラストラクチャです。個人的にそれをテストしていないが、それは素晴らしいツールのようです絶対に。4必要のないものを選択しないでください必要なデータを得ることは非常に一般的な方法は、目的のテーブルからすべてのフィールドを取得する*記号を、使用することです。wp_posts;その代わり、あなたは間違いなく、次の例に示すように、目的のフィールドだけを選択する必要があります。非常に小さなサイト上で、みましょうと言う、違いをなさない毎分1人のビジター、。そのような猫のコードのようなサイトで、それはデータベースのために多くの作業を保存します。wp_posts;5LIMITを使用してくださいそれはあなたのデータベースからのレコードのみを特定の数を取得する必要があることは非常に一般的です。ページあたり10個のエントリが表示されているブログ。その場合、あなたは間違いなくレコードのみの希望数を選択LIMITパラメータを、使用してください。LIMITがなければ、あなたのテーブルは10万異なるレコードを持っている場合、あなたのサーバの不要な作業である、それらをすべて抽出されます。10;6ループでクエリを避けるPHPなどのプログラミング言語と一緒にSQLを使用する場合、それはループ内でSQLクエリを使用したくなることもできます。これを行うと、クエリを使用してデータベースをハンマーのようなものです。mysql_query($sql);}ここでは代わりに何をすべきかです。(1,2,3)7サブクエリの代わりに結合を使用しますプログラマとして、サブクエリはあなたが使用し、濫用する誘惑に駆られることができるものです。サブクエリは、以下に示すように、非常に便利です。aサブクエリは便利ですが、彼らはしばしば実行する方がずっと速いです結合、に置き換えることができます。a.id8ワイルドカードを使うときは注意してくださいデータベース内のデータを検索するときには、1つ以上の文字に置き換えることができますので、ワイルドカードは非常に便利です。同じ仕事をすることができるときは、完全なワイルドカードを使用しないでください。実際には、上で完全なワイルドカード検索を行う万のレコードは確かにあなたのデータベースを殺すでしょう。'%hello';9UNIONの代わりにORを使用してください次の例では、使用するORの結果を得るために文を。b.y;UNIONのステートメントでは、2つ以上の選択クエリの結果セットを組み合わせることができます。次の例は、上記のクエリが取得すると同じ結果を返しますが、それは速くなります。らは時間を失うことなく、探しているものを見つけることを可能にすることができます。指数が上に作成することができます単一の列またはデータベーステーブル内の列の組み合わせ。テーブルインデックスは、特定の順序でデータベーステーブル内の1つ以上の列の値を配置するデータベース構造です。~次のクエリは、上にインデックスが作成されますモデルから列品表を。インデックスが呼び出されますidxModel。