私が構築したカスタムテンプレートファイルから何度かクエリしたいデータがたくさんあるカスタムデータベーステーブルを持っています。 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コードが増えるはずです。私は間違っていますか?
$wpdb
オブジェクト はezSQL をベースにしているので、オーバーヘッドが大きくなることはありませんので、それについては心配しないでください。データベースへの2番目の接続を自分で開くと、おそらく$wpdb
関数を使用するよりもオーバーヘッドが大きくなります。
これまでに説明した3つのクエリは、データベース(大きなデータセットからの小さな結果セット)で実行するのに理想的なクエリなので、PHPでエミュレートしないでください。クエリを高速化するために、インデックスをテーブルに追加するようにしてください(少なくともcity
に1つ)。 MySQLのEXPLAIN
機能を使用して、データベースがクエリを実行するために何をしているのか、そしてそれをどのように支援できるのかを知ることができます。