mySQL表,主键

标签 mysql relational-database primary-key

我有一个表,有两个用途。目的之一是通过运行 PHP cron 作业每 5 秒完成一次计算。为此,我需要一个由大约 5 个字段组合而成的主键。有了这个主键,cron 作业就可以非常有效且快速地运行。该表还有第二个用途,即在用户登录后检索数据以显示在网页上。为此,需要完全不同的主键。我用于 cron 的那个使它变慢。我很想创建两个具有相同字段和数据但主键不同的表。我知道这会增加很多开销,但网站会非常快速且响应迅速。这是值得推荐的吗?

最佳答案

您可以根据需要的任意字段组合创建索引。

一般来说,我更喜欢表上的自动递增整数主键。非常有用。

您可以拥有这样一个索引,然后在其他列上再构建两个索引

create index table_col1_col2_col3_col4_col5 on table(col1, col2, col3, col4, col5);

第一个索引。如果您愿意,可以将其设置为唯一索引,然后数据库将强制这五列的行之间的唯一性。然后你可以创建另一个索引以另一种方式浏览表格:

create index table_col6_col7 on table(col6, col7);

这可用于检索。

插入/更新/删除操作上维护索引会产生一些开销。您需要在您的环境中进行测试,看看这是否是一个问题(通常不是)。

关于mySQL表,主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21272040/

相关文章:

mysql - 如何执行此查询 : multiple distinct counts

php - 如何根据字段对MySQL结果进行分组

mysql - ER图——避免一对一关系

sql - 不同步时如何重置 Postgres 的主键序列?

mysql - 只检索每个实体的最后一条记录,而不是所有记录

javascript - 从 getTime() 类型的日期获取日期和时间以显示 mySQL 数据库中的日期

mysql - 如何将json分解为sql

database-design - 代理键使插入变得复杂?

mysql - 错误消息 "ORA-02270: no matching unique or primary key for this column-list"

model - laravel: Eloquent 例子将数据插入数据库