0

MySql テーブル: id (bigint) status (tinyint)およびstring (varchar[250])

コンテンツ: 約3600 万のエントリ。各文字列は[ 1 ~ 250]文字の可変長です。

希望するクエリ:SELECT id FROM tb WHERE status=N AND string IN ('str1','str2'...)

問題:フィールドstringを_INDEX

アイデアhash_strings: 次のような別のテーブルを作成します。

+--------------------+
| id [bigint]        |
+--------------------+
| str_hash [varchar] | ==> INDEX
+--------------------+

...最初にテーブルをids使用して文字列を取得し、次に最初のクエリではなくリストを操作します。文字列とハッシュを同じテーブルに格納するとテーブルが大きくなり、クエリの実行が遅くなるため、別のテーブルを作成しました。hash_stringsidsstrings

質問:

  • あなたはそれについてどう思いますか?
  • どのハッシュ関数を使用すればよいですか? (32文字、16文字)
4

0 に答える 0