我有一个表的主键是一个整数,然后是一个用于按类型搜索的列,它是一个varchar。可以说content_id和content_type。数据库设计:索引Varchar
SELECT * FROM TABLE_A WHERE content_type='abc'
varchar content_type的长度为255.我正在考虑为更快的SELECT查询编制索引。这会提高性能吗?即使长度为255,如果只使用了5个字符,而不是全部255个字符,那么这对性能有什么影响?
我有一个表的主键是一个整数,然后是一个用于按类型搜索的列,它是一个varchar。可以说content_id和content_type。数据库设计:索引Varchar
SELECT * FROM TABLE_A WHERE content_type='abc'
varchar content_type的长度为255.我正在考虑为更快的SELECT查询编制索引。这会提高性能吗?即使长度为255,如果只使用了5个字符,而不是全部255个字符,那么这对性能有什么影响?
下面是一些要点:
该指数将提高读取查询的性能(即选择)。但是,它往往会降低写查询(即INSERT和UPDATE)的性能。当你在表格中获得越来越多的记录时,情况尤其如此。
只使用5/255个字符不会影响您的索引性能足以注意到。
希望帮助!
上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个可用字符中。
想补充一点,它只会使查询在足够大的表上更快。
关于postgres varchar只为实际值使用尽可能多的空间,最大长度仅限制postgres允许插入的内容。因此,具有255的上限不会浪费索引中的空间。
它只会节省磁盘空间 – 2011-04-20 14:37:46