小编Min*_*Thu的帖子

如何设计模式来存储搜索关键字

我正在做一个数据库设计,用于存储搜索表单的搜索关键字,用于按日期、月份和年份生成最流行的搜索关键字报告。我做了一个简单的架构:

CREATE TABLE SearchTerm (
 ID             INTEGER         PRIMARY KEY AUTOINCREMENT NOT NULL,
 SearchTerm     VARCHAR( 255 )  NOT NULL,
 Date           DATE            NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,表中的搜索词将是多余的,并使数据库增长更快。我想避免数据冗余。

此外,我不确定使用日期数据类型或 unix 时间戳是否会对更快地检索数据产生影响。

那么,我应该创建一个新表来存储通过 id 链接到主表的日期吗?例如,

CREATE TABLE SearchTerm (
 ID             INTEGER         PRIMARY KEY AUTOINCREMENT NOT NULL,
 SearchTerm     VARCHAR( 255 )  NOT NULL,
 Hit           INTEGER         NOT NULL,
 DateID         INTEGER         NOT NULL
);

CREATE TABLE DateofSearchTerm (
 DateID         INTEGER         PRIMARY KEY AUTOINCREMENT NOT NULL,
 Date           DATE            NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

我关心的是随着数据库增长的性能。如果数据库设计不当,就会导致性能和瓶颈问题。

我的一个朋友做了一个分析网站,但进展不顺利。我发现表中有 300 万条记录,他的查询需要 3 多分钟才能返回结果。

而且他只创建了一张表,然后保存“事件名称”、“开始数据”、“结束日期”之类的。生成月报时,由于超时问题(服务器超时、查询超时、jquery响应超时)无法显示报告。

他的 …

database-design

5
推荐指数
1
解决办法
5527
查看次数

标签 统计

database-design ×1