我有一个表,其主键是一个整数,然后是一个用于按类型搜索的列,它是一个varchar。让我们说content_id和content_type。
SELECT * FROM TABLE_A WHERE content_type='abc'
varchar content_type的长度为255.我正在考虑为更快的SELECT查询建立索引。这会改善性能吗?即使它的长度为255,如果只使用5个字符而不是整个255,这会对性能产生影响吗?
答案 0 :(得分:10)
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个,则无关紧要。
答案 1 :(得分:2)
以下是一些要点:
索引将提高您在读取查询(即SELECT)上的性能。但是,它往往会降低写查询的性能(即INSERT和UPDATE)。当您在表中获得越来越多的记录时尤其如此。
仅使用5/255个字符不会影响您的索引效果。
希望有所帮助!
答案 2 :(得分:0)
想补充一点,它只会在足够大的表上更快地进行查询。
在postgres上,varchar只使用实际值所需的空间,最大长度只会限制postgres允许你插入的内容。因此,上限为255不会浪费索引中的空间。