0

インデックス作成のためにMySQLで特別なコンパレータを定義することは可能ですか?

2 つのキーがあるA.Zeb*ra.OとしR.Zebra.Zます。このように記述して、ユーザーにいくつかの追加情報を提供しますが、平等のために、端を取り除いて余分なを削除できます*。Java では、Comparatorインターフェイスを実装することでこれを行うことができました。MySQL にも同様のアイデアはありますか?

次のような追加の結合テーブルを作成したほうがよいでしょうか

A.Zeb*ra.O   1
R.Zebra.Z    1
L.Horse.P    2

特定の 2 つの文字列が等しいことを指定し、他のテーブルが変更されたときにこのテーブルを最新の状態に保つには?

4

2 に答える 2

1

新しい照合順序を作成できます。これは、コンパレータの作成に似ていますが、文字列のみを対象としています。http://dev.mysql.com/doc/refman/5.6/en/adding-collat​​ion.htmlを参照してください。

于 2013-07-16T14:47:43.687 に答える
1

Javaなどのようにコンパレータを定義することはできません。照合は機能するかもしれませんが、私はそれらの経験がありません。私の頭の上から、ここにいくつかの選択肢があります:

  1. 比較を行うユーザー定義関数を記述します。これは比較的遅く、最適化が不可能です。

  2. 各行の正規の並べ替え値を格納します。トリガーを使用してその値を計算できます。たとえば、テーブルは次のようになります。

    Thingie     CanonicalThingie
    ----------- ----------------
    A.Zeb*ra.O  Zebra
    R.Zebra.Z   Zebra
    L.Horse.P   Horse
    
  3. 設計を再考してください。値が 3 つまたは 4 つのことを意味する場合、A.Zeb*ra.0おそらく 3 つまたは 4 つの列に分割する必要があります。おそらく、単に並べ替えるだけでなく、より多くの課題に直面しているでしょう。

于 2013-07-16T14:50:25.620 に答える