varchar或text - mysql性能

时间:2012-01-26 09:34:07

标签: mysql performance text varchar

如果我们有这样的表:

create table x(
   id int primary key,
   something_else_1 int,
   something_else_2 int,
   something_else_3 int,

   char_data text, -- or varchar(1000)
);

将在除char_data之外的所有字段中查询此表。

大多数查询类似于:

select id, something_else_1
from x
where something_else_2 = 2 and something_else_3 = 5;

问题是 - 如果我们有索引等,

哪种配置会更好 - text或varchar。

最后一个注意事项 -

我知道我可以把它分成两个表,在这种情况下买分离不是最好的主意,因为除了blob之外的所有字段都会像独特的索引或者类似的东西。

1 个答案:

答案 0 :(得分:2)

  

将在char_data以外的所有字段中查询此表。

然后 char_data的数据类型对性能没有影响。只有当您选择char_data时,它才会消耗更多带宽。没别了。

这不是问题。因为你没有在你的SQL中使用。 SELECT *会变慢但SELECT id, something_else_1不会让它变慢。 WHERE id=2 and something_else_2=1无效,WHERE char_data like '%charsequence%'只要您不使用char_data搜索您的桌面就安全 此外,如果您仍想按char_data进行搜索,则应启用全文搜索。

ALTER TABLE `x` ADD FULLTEXT(`char_data`); 

注意:仅MyISAM表格引擎支持全文搜索。