web-dev-qa-db-ja.com

DBクエリの最も効果的な使い方

私が構築したカスタムテンプレートファイルから何度かクエリしたいデータがたくさんあるカスタムデータベーステーブルを持っています。 dbテーブルが次のようになっているとします。

id     name     city          Zip
23     Mike     New York      123
54     Peter    Los Angeles   456
78     Steven   Chicago       789
79     Tom      Los Angeles   450

そして、私は少なくとも4つのクエリを実行したいと思います。

SELECT * FROM table LIMIT $paginated,10 (this is presenting all of the names)
SELECT id,city FROM table GROUP BY city (this will be a dropdown list of all the citys)
SELECT Zip FROM table WHERE city = "New York" GROUP BY Zip

それは3つのクエリだけですが、とにかく - 1つの大きなクエリをすべてのデータと共に配列に実行してから、必要なときにその配列をループするだけのほうが効果的ですか。

私はもちろんすべての問い合わせに$ wpdb-> get_resultsを使っています、これはサーバにとっては難しいですか?つまり、DBクエリを実行するためにWPコードを使用すると、コンパイラが変換するためのPHPコードが増えるはずです。私は間違っていますか?

2
Richard B

$wpdbオブジェクト はezSQL をベースにしているので、オーバーヘッドが大きくなることはありませんので、それについては心配しないでください。データベースへの2番目の接続を自分で開くと、おそらく$wpdb関数を使用するよりもオーバーヘッドが大きくなります。

これまでに説明した3つのクエリは、データベース(大きなデータセットからの小さな結果セット)で実行するのに理想的なクエリなので、PHPでエミュレートしないでください。クエリを高速化するために、インデックスをテーブルに追加するようにしてください(少なくともcityに1つ)。 MySQLのEXPLAIN機能を使用して、データベースがクエリを実行するために何をしているのか、そしてそれをどのように支援できるのかを知ることができます。

3
Jan Fabry