如果我们有这样的表:
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)
);
该表将在除chardata之外的所有字段中进行查询。
大多数查询将类似于:
select id, something_else_1
from x
where something_else_2 = 2 and something_else_3 = 5;
问题是,如果我们有索引等,
什么配置会更好?text还是varchar。
只有最后一个音符-
我知道我可以把它分成两个表,在这种情况下,购买分离不是最好的主意,因为除了blob之外的所有字段都是类似于唯一索引或类似的。
将在除CCD_ 1之外的所有字段上查询该表。
则char_data
的数据类型对性能没有影响。只有当您选择char_data
时,它才会消耗更多的带宽。没有别的。
这不是问题。因为您在sql中没有使用。CCD_ 4将变慢,但CCD_。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表引擎才支持全文搜索。