我有一个包含大约 1000 个城市的表。有时,我需要按城市名称搜索,因此决定将其设为索引。决定索引长度的最佳实践是什么? 6 似乎是最佳选择,因为几乎不会出现重复。
示例表:
cityID | cityName | countyID
1 | Bethlehem | 30
2 | Blairstown | 38
3 | Bloomfield | 32
4 | Bloomingdale | 34
5 | Bloomsbury | 30
6 | Bogota | 31
7 | Boonton | 33
8 | Botsford | 44
9 | Bound Brook | 35
10 | Branchburg | 35
11 | Branchville | 36
12 | Brantwood | 32
13 | Briarcliff Manor | 25
cityID - 主键
countyID - 键
城市名称 (6) - 键
我这样做对吗?
当我尝试运行时
EXPLAIN SELECT *
FROM 'CITIES'
WHERE 'cityName' = 'Branchburg'
我得到了以下结果:
id: 1
select_type: SIMPLE
table: CITIES
type: ref
possible_keys: cityName
key: cityName
key_len: 20
ref: const
rows: 2
Extra: Using where
“key_len”不应该是 6 吗?
最佳答案
这取决于字符集。例如,如果您使用 utf8,则类似于 6 * 3 = 18 ... 我想,我不确定 2 个字节来自哪里
关于mysql - 城市名称字段的索引长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8827928/