巨大な Web サイトと、いくつかの列 ("ID"、"AuthorID"、"Message"、"Time" など) を持つ巨大なテーブル (数百万のエントリ テーブル) があり、Twitter のようなメッセージが含まれているとしましょう。
次の簡単なクエリを実行します。
SELECT * FROM HugeTable ORDER BY Time DESC LIMIT 1,10;
このクエリは何度も実行されます (1 秒あたり数十回)。このクエリが非常に高速であることを確認するにはどうすればよいですか?
memcached が解決策になる可能性があると思いましたが、新しい投稿は非常に迅速に追加され、memcached を使用すると「古い」メッセージをユーザーに提供できます。
mysql サーバーが 1 つしかなく、すべてのトラフィックを処理できるほど優れているとします。
私の問題は、サーバーがテーブル全体を取得し、それを並べ替え (ここでは大きなボトルネック)、最初の 10 のみを取得する必要があることです。もしかしてパーティショニング?また、テーブル内では、新しい投稿が下に配置されるため、新しい投稿には以前よりも「ID」と「時間」>= があると想定しても安全です。
前もって感謝します。
PS: 私は MySql の専門家ではありません (基礎は知っていますが)、NoSql メソッドについての手がかりもありません。NoSql が私の仕事を十分に満たす方法であると信じているなら、私は何か新しいことを学ぶことにオープンです :)