我正在构建一个多语言Web应用程序。
存储在数据库中的网址如:
id_url bigint(18)
id_map int(11)
id_entity bigint(18)
active tinyint(1)
lang varchar(8)
path varchar(500)
path_ids varchar(50)
full_path_ids varchar(50)
created_at datetime
我的问题是关于path
索引。我只需要进行搜索LIKE '$str%
。我不需要LIKE '%$str'
。
索引是:idx_url_path BTREE No No path (255) 22 A No
它会自动降级为255
。
关于如何完成任务的任何想法?
答案 0 :(得分:0)
来自:http://dev.mysql.com/doc/refman/5.5/en/innodb-restrictions.html
默认情况下,单列索引的索引键最多可达767 字节。相同的长度限制适用于任何索引键前缀。看到 第13.1.13节“创建索引语法”。例如,你可能会命中 此限制,列前缀索引超过255个字符 TEXT或VARCHAR列,假设UTF-8字符集和最大值 每个字符3个字节。当innodb_large_prefix 配置选项已启用,此长度限制将提升至3072 字节,用于使用DYNAMIC和COMPRESSED行的InnoDB表 格式。
因此,假设您使用的是InnoDB引擎,除非启用innodb_large_prefix
配置选项,并且您的表使用DYNAMIC
和COMPRESSED
,否则您无法索引500个字符行格式:
innodb_large_prefix: http://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html#sysvar_innodb_large_prefix
DYNAMIC行格式: http://dev.mysql.com/doc/refman/5.5/en/glossary.html#glos_dynamic_row_format
COMPRESSED行格式: http://dev.mysql.com/doc/refman/5.5/en/glossary.html#glos_compressed_row_format