2010-12-06 6 views
1

固定長で文字列のハッシュを作成し、ハッシュにインデックスを付けることを考えてみましょう。もしそうなら、MySQL内でこれを行う方法があるのか​​、それともMySQLの外でプロセスのいくつかの部分を行う必要がありますか?、私はそれをインデックスとして定義された文字列を使用することができない回避するには?

データベースエンジンはInnoDBで、ここには私が得意とするエラーに関する情報があります。基本的に列フィールドが一意でない場合は、挿入トランザクションがロールバックされることを意味し、UNIQUE constraintなどの自然LONGTEXTキーである列を使用しようとして

http://forums.techarena.in/software-development/1185285.htm

。列の長さは80〜150,000文字です。

+0

あなたはENUMを参照していますか? http://dev.mysql.com/doc/refman/5.0/en/enum.html – superfro

+0

またはFULLTEXTで検索しますか?私はその質問を理解しているか分からない。 – superfro

+0

@superfro:いいえ、ENUMではありません。質問が更新されました。 – blunders

答えて

1

UNIQUEのインデックスは、TEXT/LONGTEXT/BLOBのインデックスは、MySQLが任意の長さインデックスを持つことができないのでお勧めできません。フィールドの長さを制限して(この場合はVARCHARにすることもできます)、最大文字数を指定する必要があります(たとえば、UNIQUE (fieldname(255)) - UTF8の現在の制限は4005、通常の制限は1000) UNIQUEインデックス。

+0

さて、私はそれは良いアイデアではないと知って、周りの仕事を探しています。たとえば、テキストのハッシュを作成します。フィールドを最初のXX文字に限定することは意味がないのでオプションではありません。 – blunders

+1

@blundersこれを行う必要があるとき、私は「ユニーク」インデックスがオプションではないため、目的のためにハッシュを使用します。 – Orbling

+0

よろしくお願いいたします。それでは、MySQLは列を使ってハッシュを作成し、それを別のハッシュとして保存する方法を持っていますか、それともアプリケーション層でこれを行う必要がありますか?レコードが存在する場合、トランザクションを取り戻す必要があるため、これはすべて1つのトランザクション内になければならないと推測します。 – blunders

関連する問題