额外的sql查询或额外的8个字段(性能)

时间:2015-07-06 17:38:09

标签: php mysql pdo


当用户客户端存储在数据库中时,我就有这种情况 并且存在诸如姓名,地址,州,邮编,国家,电子邮件等的内容。

clients_table
client_id, client_name, client_address, client_state ...etc

会员可以向现有客户或新客户出售(未保存的数据) 我必须将交易存储在数据库中
我想到了方法NUMBER 1

transactions_table
trxid, client_id, client_name, client_address, client_state ...etc

其中client _ id引用client上的clients_table _ id

为了避免在数据库中放置数字,当交易时 提取我做2个查询 - 第一次查询会检查client_idtransactions_table是否为clients_table 是或否。如果它不为null,则客户端已经存在于数据库中 在这种情况下,进行第二次查询以获取客户端的客户端数据 具有该特定ID,在client_id
- 如果transactions_table上的(defn parallel-api-query [queries] (let [qs (map http/get queries) bodies (map #(json/read-str (:body @%)) qs)] bodies)) 为空,则表示未存储客户端数据(客户端客户端)
并且所有可用数据都存储在交易表中
这样,当client_id存在但我避免输入相同的客户端数据时,我会进行额外的查询 一遍又一遍。


方法编号2
而不是检查交易是否属于已保存的客户端 我只是将客户端数据ALWAYS存储在transactions_table中,所以我将为 有一个非常大的,多次的公布表


你们有什么感想?我应该采用方法1还是2?

1 个答案:

答案 0 :(得分:2)

你现在拥有的是好的,你应该总是尽量避免重复数据。

但是,您不必编写两个查询。无论是否存在与事务关联的客户端,您都可以使用LEFT JOIN来提取所有事务和客户端。

读取数据时,可以检查client_id列是否为空。如果是,请不要费心阅读其他专栏。如果它不为空,您可以从中读取。