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
IDEA:创建一个单独的表,hash_strings
如下所示:
+--------------------+
| id [bigint] |
+--------------------+
| str_hash [varchar] | ==> INDEX
+--------------------+
ids
...所以我首先使用表获取字符串hash_strings
,然后在第一个查询中使用列表ids
而不是。strings
我制作了一个单独的表,因为将字符串和哈希存储在同一个表中会使表更大,并且查询运行速度更慢。
问题:
- 你怎么看待这件事?
- 我应该使用哪个哈希函数?(32 个字符,16 个字符)