【发布时间】:2015-01-18 12:16:21
【问题描述】:
我有 3 个表:用户、公司和交易。
一个用户可能拥有多家公司。两家公司之间达成交易。我需要一份涉及我公司的交易清单。
交易必须包含以下字段:partner_company_id、my_company_id、partner_photo、partner_name、deal_about。
语言代码:PHP。 数据库:Mysql。
1.我可以通过用户ID获得的公司列表。
user_id = 22;
companyList = query('SELECT company_id FROM company WHERE user_id = ?', user_id);
2。然后我得到 my_company_id 是 company_first_id 的交易列表
list1 = query('SELECT u.name AS partner_name, u.photo AS partner_photo, d.first_company_id AS
my_company_id , d.second_company_id AS partner_company_id,d.about AS deal_about FROM deal AS d
INNER JOIN company AS c ON c.company_id = d.second_company_id
INNER JOIN user AS u ON u.user_ud = c.user_id
WHERE d.company_first_id IN (?)', companyList);
3.然后我得到 my_company_id 是 company_second_id 的交易列表
list2 = query('SELECT u.name AS partner_name, u.photo AS partner_photo, d.first_company_id AS
partner_company_id , d.second_company_id AS my_company_id,d.about AS deal_about FROM deal AS d
INNER JOIN company AS c ON c.company_id = d.first_company_id
INNER JOIN user AS u ON u.user_ud = c.user_id
WHERE d.company_second_id IN (?)', companyList);
4.然后我marge到数组并设置限制列表
list = array_marge(list1,list2);
result = array_slice (list ,0 , 10);
帮助,请优化此查询。
谢谢。
数据库方案
user | company | deal |
--------------------------------------------------
user_d | company_id | deal_id
photo | user_id |first_company_id
name | about |second_company_id
| |description
【问题讨论】:
-
我认为让别人为你做所有的工作是很不礼貌的。很好的问题是:我有这个优化的想法,这会奏效还是你知道一些改进?或者:有没有关于查询优化的好书?
-
我们不是来做你的工作的。你有什么理由怀疑这些查询可以优化吗?关于从哪里开始有什么想法吗?
标签: php mysql sql database optimization