我需要将数据存储在如下所示的表中:
$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
FOREIGN KEY
表ID
和Data
或是外键吗?与其他一切的表?
感谢。
更新:
示例查询将是:
SELECT * from $table_name WHERE
type='something'
AND shared_network=TRUE
AND shared_label=TRUE
答案 0 :(得分:1)
对于此查询:
SELECT *
from $table_name
WHERE type ='something' AND shared_network = TRUE AND shared_label = TRUE;
您可以在table(type, shared_network, shared_label)
上创建索引。索引将满足where
子句。剩下的工作是获取适当的行。拥有两张桌子没有任何好处。