MySQL性能:2个表或1个具有LONGTEXT类型的表

时间:2015-04-07 02:04:52

标签: php mysql

我需要将数据存储在如下所示的表中:

$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与IDData和1与其他一切?

其次,如果使用两个表更高效,那么哪个更高效:运行两个查询,一个查找我需要的ID,另一个查找Data那些ID的价值。或者,ID上的外部联接(我需要所有值)。

最后,如果外部联接是最好的方式,ID FOREIGN KEYIDData或是外键吗?与其他一切的表?

感谢。

更新:

示例查询将是:

SELECT * from $table_name WHERE
type='something'
AND shared_network=TRUE
AND shared_label=TRUE

1 个答案:

答案 0 :(得分:1)

对于此查询:

SELECT *
from $table_name
WHERE type ='something' AND shared_network = TRUE AND shared_label = TRUE;

您可以在table(type, shared_network, shared_label)上创建索引。索引将满足where子句。剩下的工作是获取适当的行。拥有两张桌子没有任何好处。