如果我们有这样的表:
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之外的所有字段都会像独特的索引或者类似的东西。
答案 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表格引擎支持全文搜索。