php - 如何使用 mysql 和 php 将大文本数据存储在带有 id 链接的两个表中

标签 php mysql bigdata longtext

我有一个带有表的数据库,其中一列是存储文本数据的“project_stmt”。我已将数据类型设置为 varchar(1000) 但有时使用项目语句的输入文本会超过 100K 个字符,在这种情况下数据不会存储到数据库中,

一个解决方案是使用 BLOB 数据类型,但在这种情况下,我浪费了很多空间,因为“project_stmt”的 80% 用户输入将低于 500 个字符.....所以我想存储用户输入文本'project_stmt' 到第二个表,例如分配数据链接,,,,我该怎么做

CREATE TABLE projects (user_id int(11),
                    project_id int(11) NOT NULL AUTO_INCREMENT,
                    project_title varchar(25) NOT NULL,
                    project_stmt varchar(1000) NOT NULL,
                    PRIMARY KEY (`project_id`),
                    FOREIGN KEY (`user_id`) REFERENCES `user_info` (`user_id`)
                    );

最佳答案

创建一个新表。

CREATE TABLE projects_blob (project_blob_id int(11) NOT NULL AUTO_INCREMENT,
                    project_id int(11),
                    project_stmt blob NOT NULL,
                    PRIMARY KEY (`project_blob_id`),
                    FOREIGN KEY (`project_id`) REFERENCES `projects` (`project_id`)
                    );

插入新条目时,检查 project_stmt 长度,如果大于 1000,则在 blob 表中插入。 选择 project_stmt 时,与该表进行左连接,而不是使用 projects.project_stmt

COALESCE(projects_blob.project_stmt, projects.project_stmt) AS project_stmt

应该可以解决问题

关于php - 如何使用 mysql 和 php 将大文本数据存储在带有 id 链接的两个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26056213/

相关文章:

php - 在 php 中清理整个 $_POST 数组的好方法是什么?

php - file_exists & is_file 不工作

php - 新行未按升序插入 - MYSQL

php - 如何包含来自破坏元素的文本?

mysql - 在 MySQL 中创建子分区

mysql - 从 linux mint 完全卸载 mysql

php - "Real"使用 Doctrine/MySQL 删除孤儿

hadoop - 计算大于 100MB 的 hdfs 压缩文件

postgresql - 为什么 postgresql 写入巨大的临时文件并在循环中填满我的磁盘?

scala - 如何根据 spark 数据框中值的累计和为每一行分配一个类别?