php - MySQL 性能 : 2 Tables or 1 Table with a LONGTEXT type

标签 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 的外部联接(我需要所有值)。

最后,如果外连接是最好的方式,IDID 表上的 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/

相关文章:

PHP rand() ...获得真正的 50/50 结果?

php - 使用 MAX 查询

php - 更新 Codeigniter Controller/MySQL 中的表数据

PHP、MYSQL --> 在 INSERT INTO 语句后直接选择 *

javascript - 如何使用php查找html中的元素?

php - 更改数据库时出现意外语法错误 - yii

mysql - 通过 SQL 从模板表中插入缺失的记录

php - 在表格中查找相似的数字模式

mysql。选择字段最大的行,按其他字段分组

php - 在 Woocommerce 中添加自定义字段作为订单备注