私が PHP/MySQL で作業しているソーシャル ネットワークでは、友人ページがあり、ほとんどのネットワークと同様に、ユーザーが持っているすべての友人が表示されます。MySQL にフレンド テーブルがありますが、いくつかのフィールドしかありません。auto_ID、from_user_ID、to_friend_ID、日付
友達ページに、結果を並べ替えるためのいくつかの異なるオプションを用意したいと思います。
基本的に友達が追加された順であるauto_IDによって。それは単なる自動インクリメントIDです
日付による新しい友達、日付フィールドを使用します
友達の名前で、アルファベット順にリストが表示されます。
アルファベット順は、アドバイスが必要な場所です。アルファベット AZ のリストが表示されます。ユーザーが K をクリックすると、K で始まるすべてのユーザー名が表示されます。秘訣は、高速である必要があるため、ユーザーのテーブルで JOIN を実行することはオプションではありません。ほとんどの人は高速であると主張しますが、このアクションに必要なパフォーマンスではありません。私が思いついたアイデアの 1 つは、フレンドシップ テーブルにフィールドを 1 つ追加して、ユーザー名の最初の文字をそこに格納することでした。ユーザーはいつでも名前を変更できるため、ユーザーが名前を変更するたびに、何千もの可能性のあるレコードでこれが更新されるようにする必要があります。
これを行うより良い方法はありますか?