ランキングを表示するために使用される Web サイトのテーブルを最適化するために、実際にいくつかの助けを借りることができます。クエリを最適化する方法とインデックスを適切に使用する方法について多くのことを読んできましたが、うまくいくと思った変更を実装した後でも、ほとんど改善が見られません. 私の簡単な解決策は、トップ 100,000 ランキング (毎日更新され、別のテーブルに保存されている) のみを使用して、今のところ速度を向上させることですが、私はそのオプションが本当に好きではありません.
したがって、次のようなユーザーの情報を格納するテーブルがあります。
テーブル「キャッシュ」:
id (Primary key)
name
region
country
score
ユーザーについては他にも変数が保存されていますが、ランキングでは使用されていないため、ここでは関係ないと思います。
ユーザーが表示できる 3 つの基本的なランキング ページがあります。
世界観:
SELECT cache name,region,country,score FROM cache ORDER BY score DESC LIMIT 0,26
地域ビュー:
SELECT name,region,country,score FROM cache WHERE region='Europe' ORDER BY score DESC LIMIT 0,26
そしてカントリービュー:
SELECT name,region,country,score FROM cache WHERE region='Europe' AND country='Germany' ORDER BY score DESC LIMIT 0,26
データベースの作業を軽減するために考えられるほとんどすべてのインデックスの組み合わせを試しましたが、一部は少し役立つように見えますが、地域と国のクエリの両方で 26 行しか返さないものは見つかりませんでした(単に「スコア」の指標であり、世界ランキングは猛烈な速さです)。
何か基本的なことが欠けているような気がします。どんな助けでも大歓迎です!
追加情報: キャッシュ テーブルは現在、合計 800,000 を少し超える行で、約 920 メガバイトです。さらに情報を使用できる場合は、お知らせください。