2011-04-20 47 views
3

我有一个表的主键是一个整数,然后是一个用于按类型搜索的列,它是一个varchar。可以说content_id和content_type。数据库设计:索引Varchar

SELECT * FROM TABLE_A WHERE content_type='abc' 

varchar content_type的长度为255.我正在考虑为更快的SELECT查询编制索引。这会提高性能吗?即使长度为255,如果只使用了5个字符,而不是全部255个字符,那么这对性能有什么影响?

+0

它只会节省磁盘空间 – 2011-04-20 14:37:46

回答

2

下面是一些要点:

  • 该指数将提高读取查询的性能(即选择)。但是,它往往会降低写查询(即INSERT和UPDATE)的性能。当你在表格中获得越来越多的记录时,情况尤其如此。

  • 只使用5/255个字符不会影响您的索引性能足以注意到。

希望帮助!

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%'; 

,如果你只使用5没关系在255个可用字符中。

0

想补充一点,它只会使查询在足够大的表上更快。

关于postgres varchar只为实际值使用尽可能多的空间,最大长度仅限制postgres允许插入的内容。因此,具有255的上限不会浪费索引中的空间。