ホームページ >データベース >mysql チュートリアル >MySQL の文字列に効率的なインデックスを追加する方法
日常的なニーズにおいて、ユーザーが携帯電話番号または電子メール アドレスを使用してシステムにログインすることは非常に一般的な操作です。そこで、携帯電話番号などのフィールドに適切なインデックスを確立する方法またはメールアドレス?毛織物?
プレフィックス インデックスは、フィールド値の一部をインデックスとして使用します。 MySQL でインデックスを作成するときにインデックス フィールドの長さを指定しない場合、文字列全体がインデックスの構築に使用されます。
语句1: alter table test add index idx(email); 语句2: alter table test add index idx(email(8));
ステートメント 1 の場合、作成されたインデックスには、各レコードの電子メール文字列値全体が含まれます。
ステートメント 2 の場合、作成されたインデックスには、各レコードの電子メール フィールドの最初の 8 バイトが格納されます。
プレフィックス インデックスを使用する利点は明らかです。つまり、インデックスが占めるスペースが少なくなり、インデックス ツリー全体がよりコンパクトになり、ツリーの高さが比較的低くなります。
ただし、それに応じてインデックスの識別性が低くなり、インデックス スキャンの行数が増加する可能性があります。
インデックスを作成するとき、インデックスの区別は非常に重要な指標です。解像度が高いほど、重複する値が減り、スキャンの効率が高くなります。
プレフィックス インデックスの長さを適切に計画すると、スペースを節約できるだけでなく、追加の行をスキャンする必要もなくなります。使用する具体的な長さは、実際のビジネス シナリオに基づいて判断およびテストすることをお勧めします。
逆順プレフィックス インデックスには、ID 番号のインデックス付けという古典的な使用シナリオがあります。
市または郡の全員の ID 情報を管理する必要があり、ID 番号によるクエリが高頻度で実行されるシナリオだとします。
ID 番号は合計 15 桁または 18 桁です。一般的に、同じ都市または郡内の人々の ID 番号の最初の 6 桁は通常同じです。ID 番号が完全に直接インデックスされている場合は、スペースが無駄になり、パフォーマンスの低下につながります。直接プレフィックス インデックスを使用する場合、ほとんどの値の最初の 6 ビットは同じであるため、最初の 6 ビットの区別はほとんどありません (またはまったく区別されません)。
現時点では、逆接頭辞インデックスを使用する利点が反映されています。
まず ID カードを逆順で保存するか、逆順で冗長 ID カード番号フィールドを作成し、最初の 6 桁をプレフィックス インデックスとして取得します。
ID カードの下 6 桁の区別は基本的に十分ですが、それでもクエリ速度が足りないと感じる場合は、最初の 8 桁を取得しても問題ありません。
以上がMySQL の文字列に効率的なインデックスを追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。