数据拆分与合并(数据库与全文检索)

不同页面,要显示的信息不一样。比如在商品列表页面,只需显示商品名称、价格等简单信息;在商品详情页面,则还需显示属性、描述等详细信息。

为了满足既可以显示简单信息,又可以显示详细信息,还可以显示其他各种各样不同信息。我们把完整的信息拆分成多个最简单元,存储到多张数据表中,然后按各种需要关联查询,合并成各种各样不同信息。

当只需要某张表简单信息,则直接查询对应的表就行了。不用一下子获取全部信息,节约性能、存储空间。

当需要详细信息,则需联表查询。不需要复杂条件,只通过商品主键进行关联查询,不会很慢。但一般还是会把查询结果缓存,利用缓存空间,提高性能。

 

当需要进行复杂条件查询的时候,联表查询会严重降低性能。这个时候,一般要使用全文检索工具,如Sphinx, ElasticSearch等。我用的是Sphinx,好像现在很少人用了。

而使用全文检索工具,就得把所有记录,需要索引的字段关联查询,合并成详细信息,用来建立索引。

 

基本上,所有系统都需要复杂查询,也就是搜索功能。