我正在做一个数据库设计,用于存储搜索表单的搜索关键字,用于按日期、月份和年份生成最流行的搜索关键字报告。我做了一个简单的架构:
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响应超时)无法显示报告。
他的 …