哪个更快:在大型非规范化表上查找或在三个较小的表之间进行连接?

Nob*_*ift 1 mysql sql database performance join

我有一个非规范化的表,里面有100,000条记录.我可以将其归一化为一个少于50条记录的表,以及上述表与另一组10000条记录之间的20000条记录的多对多记录.在100,000条记录中查找或将10000条记录中的一条记录加入到多对多关系中是否更快?引用非常受欢迎,因为我不相信我可以测试这两个条件.

Ahe*_*eho 6

通常,如果适当的索引到位,则对于select语句,非规范化表将更快,但是在某些情况下,非规范化表将表现更差.它取决于相对行宽.如果您将占用大部分非规范化表的行宽的列分解出来,并且结果表的行数要小得多,那么由于更好的缓存,规范化结构可能会更快(表的内存占用量会小得多) ).

在您的情况下,您应该知道100K记录是一个非常小的数据库,您可能不应该让性能成为变更背后的驱动因素.除了性能之外,规范化还有很多好处.