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_strings
ids
strings
質問:
- あなたはそれについてどう思いますか?
- どのハッシュ関数を使用すればよいですか? (32文字、16文字)