搜索多个表(最佳实践)

res*_*ion 2 python mysql sql postgresql pylons

我有由表格组成的物业管理应用程序:

tenants
landlords
units
properties
vendors-contacts
Run Code Online (Sandbox Code Playgroud)

基本上我想要一个搜索字段来搜索它们,而不是必须选择我正在搜索的类别.这是否是一个可接受的解决方案(明智的技术?)

从长远来看,搜索5个表是否可以,而不是陷入服务器?完成此任务的最佳方法是什么?

使用PostgreSQL

cas*_*One 7

为什么不创建一个视图,这是一个表的联合,它将您要搜索的列聚合为一个,然后搜索该聚合列?

你可以这样做:

select 'tenants:' + ltrim(str(t.Id)), <shared fields> from Tenants as t union
select 'landlords:' + ltrim(str(l.Id)), <shared fields> from Tenants as l union
...
Run Code Online (Sandbox Code Playgroud)

这需要从客户端查询中嵌入一些逻辑; 它必须知道如何制作它正在寻找的密钥才能搜索单个字段.

这就是说,它可能会更好,如果你只是有一个单独的列其中包含一个"类型"值(例如业主,租客),然后过滤两个类型和ID,因为这将是计算上更便宜的(和可优化的更好).

  • Upvoting以补偿无法解释和特殊的downvote - 这个答案,虽然简洁,但提出了一个非常合理的想法(当然,该视图也将具有实际表的主键,并且这些键应保持不同,以便识别各种搜索的表点击来自很容易). (2认同)