gpt4 book ai didi

php - 用于私有(private)消息传递的单个 mysql 表

转载 作者:可可西里 更新时间:2023-11-01 06:59:09 24 4
gpt4 key购买 nike

我正在尝试为网站上的私有(private)消息创建一个表。我创建了下表,我认为它很有效,但我非常感谢您提供反馈。

CREATE TABLE IF NOT EXISTS `pm` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`to` int(11) NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`subject` varchar(255) DEFAULT NULL,
`message` text NOT NULL,
`read` tinyint(1) NOT NULL DEFAULT '0',
`deleted` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
FOREIGN KEY (user_id) REFERENCES User(user_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

我有 2 列确定消息的状态:readdeleted

如果read = 1,则消息已被接收者读取。如果 deleted = 1,则发件人或收件人从已发送或已接收的收件箱中删除了邮件。如果 deleted = 2 两个用户都删除了消息,则从数据库表中删除该行。

最佳答案

我看到您没有明确说明任何索引。在你的表上有适当的索引可以显着提高你的性能。我还相信,对于您的消息列,您可能需要考虑将 i 设为具有明确说明的最大大小的 varchar。除了您可能已经处理过的那两个项目外,我觉得您的 table 看起来还不错。

MySQL 表性能指南:

  1. 为表添加适当的索引。 索引不仅适用于主键/唯一键,还可以将它们添加到经常引用的列中。
  2. 明确说明最大长度。 固定长度的表比对应的表更快
  3. 总是有一个 id 列。
  4. 尽可能添加 NOT NULL。 空值仍然占用空间
  5. 了解您的数据类型。 知识就是力量,可以节省性能和空间

有趣的文章:
VarChar/TEXT Benchmarks
Similar Question
Some Best Practices
Data Type Storage Requirements

文章和我列出的一些项目可能不是 100% 正确或可靠,所以如果您有兴趣进一步调整您的性能,请确保您自己做一些研究。

关于php - 用于私有(private)消息传递的单个 mysql 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6751739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com