mysql - 城市名称字段的索引长度

标签 mysql indexing database-design

我有一个包含大约 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/

相关文章:

mysql - 异步和 Knex : how they work ?

hadoop - 如何以mapReduce方式建立Lucene索引?

mysql - 3个强实体集的数据库设计

php - 在php中保护数据库密码

php - 如何在mysql或PHP中获取匹配结果的百分比?

mysql - 查询仍然很慢

子文档键上的 MongoDB 索引

mysql - Android应用程序的数据库设计

database - 代理与自然/业务 key

mysql - SQL:对结果列表运行嵌套查询