我需要将数据存储在如下所示的表中:
$sql = "CREATE TABLE $table_name (
id int unsigned not null auto_increment,
type varchar(15) default '' not null,
name varchar(40) default '' not null,
folder varchar(25) default '' not null,
data mediumtext default '' not null,
shared_network bool,
owner int unsigned,
shared_label bool,
creator int unsigned,
thumbnail int unsigned,
PRIMARY KEY (id)
)$charset_collate;";
我的第一个问题是,因为 Data
值将是一个很大的值,将它分成两个表是否会更高效:1 有 ID
和Data
和 1 以及其他所有内容?
其次,如果使用两个表的性能更高,那么哪个表的性能更高:运行两个查询,一个用于查找我需要的 ID
,另一个用于获取 Data
那些 ID
的值。或者,ID
的外部联接(我需要所有值)。
最后,如果外连接是最好的方式,ID
是 ID
和 表上的
还是表中包含其他所有内容的外键?FOREIGN KEY
>数据
谢谢。
更新:
一个示例查询是:
SELECT * from $table_name WHERE
type='something'
AND shared_network=TRUE
AND shared_label=TRUE
最佳答案
对于这个查询:
SELECT *
from $table_name
WHERE type ='something' AND shared_network = TRUE AND shared_label = TRUE;
您可以在 table(type, shared_network, shared_label)
上创建索引。索引将满足 where
子句。其余工作是获取适当的行。有两个表没有任何优势。
关于php - MySQL 性能 : 2 Tables or 1 Table with a LONGTEXT type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29482536/