数据库设计:索引Varchar

时间:2011-04-20 14:35:48

标签: mysql sql sql-server postgresql

我有一个表,其主键是一个整数,然后是一个用于按类型搜索的列,它是一个varchar。让我们说content_id和content_type。

SELECT * FROM TABLE_A WHERE content_type='abc'

varchar content_type的长度为255.我正在考虑为更快的SELECT查询建立索引。这会改善性能吗?即使它的长度为255,如果只使用5个字符而不是整个255,这会对性能产生影响吗?

3 个答案:

答案 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不会浪费索引中的空间。