【发布时间】:2017-11-02 16:07:56
【问题描述】:
我目前正在设计我的数据库的结构。计划拥有一个包含数亿行的巨大表(我们称之为 Clicks 表)。它的许多列将在其他表中用外键引用,以减小这个巨大表的大小并减少查询时间。
我计划在其他“参考表”中存储有关点击的大部分数据。因此,当我查看 Clicks 表时,我将简单地加入其中一些参考表,以获得我想了解的有关点击的信息。
第一个问题:在速度方面这样做是否是一个好习惯 - 如果我稍后要在这个巨大的 Clicks 表上进行大量选择?
这些较小的参考表将有几千行,其中大部分是带有字符串类型的 1 列。这些字符串的长度介于 5-50 个字符之间。
我打算做的是,当有点击的时候,我会检查这些小表是否已经存在相同的值,如果没有,我会插入它们。
这需要一个 SELECT。
第二个问题: 最好对字符串本身执行搜索并为其编制索引,还是我应该有另一列包含字符串的 MD5 结果并查找 MD5 字符串(带索引)反而?换句话说,字符串的大小是否会影响在简单选择中查找字符串的长度?
我打算做这样的选择:
SELECT id FROM table1 WHERE string = $string
有没有更好的方法来实现上述任何一项?
【问题讨论】: