这两个数据库设计中的哪一个会导致更快的查询?

时间:2009-08-05 09:02:58

标签: database-design search

哪个会更快,答案取决于:

1)在DB表A中查找数字id,然后查询另一个表B以查找该数字ID的所有实例。表B可能大100倍。

2)直接使用表格B查询表格。

现在我写这个,我觉得直觉解决方案1更快(这就是我要做的事情)但想知道你的想法。

我的理由是,比较两个数字以比较两个字符串必须更快,因为平均数字更短。

3 个答案:

答案 0 :(得分:2)

实际上,您正在构建自己的索引。数据库做得非常好。向表B添加适当的索引,让Db完成工作。

答案 1 :(得分:1)

它主要取决于您使用的SQL引擎(Oracle,SQL Server,MySQL,Postgres等),因为它们都会以不同的方式进行优化。

根据我对SQL Server的经验,我没有看到在搜索数字或搜索字符串之间存在任何可衡量的差异,只要目标列适当地编入索引。因此,我可能会选择(2),因为它少了一个SQL查询。但是,我还要对每个解决方案进行基准测试,以验证时间......

我有太多场合因为表现原因而做出决定会适得其反或有可以忽略不计的好处,我会根据硬数而不是理论基础做出这样的决定。

答案 2 :(得分:0)

这更像是关于规范化的问题吗?

字符串是否在表B中多次存储?您是否在询问是否应将此字符串存储在表B和表A中。

我认为选项1是最佳方式。

表A - ID_A,名称,数据......

表B - ID_B,ID_A,数据......

SELECT
    *
FROM
    TableA
INNER JOIN
    TableB
ON
    TableA.ID_A = TableB.ID_A
WHERE
    TableA.Name LIKE '%search%'