【问题标题】:Optimal key length for a varchar column in MySQL InnoDBMySQL InnoDB 中 varchar 列的最佳键长度
【发布时间】:2011-07-19 00:30:05
【问题描述】:

我有下表:

CREATE TABLE cities (
city_id INT,
city_name VARCHAR(255),
-- some other columns
PRIMARY KEY (city_id)
) ENGINE=InnoDB

我想为 city_name 添加一个索引,以便我可以使用 LIKE 运算符对其进行搜索。如何确定最佳密钥长度?

编辑:此表将填充美国城市,用例是只读的。

【问题讨论】:

    标签: mysql optimization key varchar


    【解决方案1】:

    您希望密钥长度足够宽,以便大多数情况是唯一的并且不会更宽。如果您有现有数据,请查看键的宽度必须是多少个字符,以便几乎所有城市都可以表示为所选宽度中的不同字符串。如果您没有现有数据,请在 Google 上搜索您感兴趣的地理城市列表(例如美国、全世界)并将其用作您的指南。

    例如,如果您的键宽只有 5 个字符宽,那么像这样的城市

    Saint Louis
    Saint Petersberg
    

    在密钥中都将被表示为“Saint”,导致密钥成为不完美的鉴别器。

    如果这是要考虑的整个城市集,那么 7 的密钥长度将是理想的。你的钥匙是

    Saint L
    Saint P
    

    这是涵盖该内容的 MySQL 手册页:

    http://dev.mysql.com/doc/refman/5.6/en/create-index.html

    查找文字CREATE INDEX part_of_name ON customer (name(10));

    对于城市列表,如果您只想考虑人口最多的城市:

    http://en.wikipedia.org/wiki/List_of_United_States_cities_by_population

    完整列表:

    http://geonames.usgs.gov/domestic/download_data.htm

    (热门地名词典,人口稠密的地方)

    【讨论】:

    • 考虑到美国有很多城市,你知道有什么工具可以帮助我分析我的数据吗?
    • @geofflee:添加了参考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 2011-12-17
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    相关资源
    最近更新 更多