【问题标题】:Database Design: Index Varchar数据库设计:索引 Varchar
【发布时间】:2023-03-26 09:55:01
【问题描述】:
我有一个表,它的主键是一个整数,然后是一个用于按类型搜索的列,它是一个 varchar。让我们说 content_id 和 content_type。
SELECT * FROM TABLE_A WHERE content_type='abc'
varchar content_type 的长度为 255。我正在考虑将其编入索引以实现更快的 SELECT 查询。这会提高性能吗?即使它的长度为 255,如果只使用 5 个字符而不是整个 255,这会对性能产生影响吗?
【问题讨论】:
标签:
mysql
sql
sql-server
postgresql
【解决方案1】:
content_type 上的索引应该使您的查询速度更快:
select * from table_a where content_type = 'whatever';
select * from table_a where content_type like 'whatever%';
但它不会使您的查询更快:
select * from table_a where content_type like '%whatever%';
您是否只使用 255 个可用字符中的 5 个也没关系。
【解决方案3】:
想补充一点,它只会使查询在足够大的表上更快。
在 postgres 上,varchar 仅使用实际值所需的空间,最大长度仅限制 postgres 允许您插入的内容。因此,上限为 255 不会浪费索引中的空间。