【问题标题】:Reading from one table to get a field and then using that field info to query and get information from another field takes a LONG time从一个表中读取一个字段,然后使用该字段信息从另一个字段查询和获取信息需要很长时间
【发布时间】:2012-02-12 08:03:49
【问题描述】:

我正在编写一个连接到远程服务器上 MySQl 数据库的桌面应用程序。 我在 MySQL 数据库中有两个表。

一个名为 Client 的表包含联系人 ID 和其他基本联系信息。

另一个表叫做Property,包含了属性类型和地址信息,还有一个Client_Id字段,和Client表中的Id字段一样。

目前我打开了一个到数据库的连接。

然后我使用 Select 查询从属性表中获取字段调用 PropertyType = 'House' 的所有属性的列表。

然后我获取该列表并使用另一个 SELECT 查询对其进行枚举,该查询根据获取列表中的 ID 的 ID 获取每个客户。

然后我关闭连接。 所以我只打开和关闭一次连接。

仅 400 条记录就需要很长时间,我只是在学习 mySQL,相信有更好的方法。任何人都可以就我如何查询表以获取与特定条件匹配的所有字段然后使用字段 (Client_Id) 搜索另一个表以根据与 Client_Id 匹配的 Id 获取客户提供任何建议吗?

【问题讨论】:

标签: c# .net mysql sql ado.net


【解决方案1】:

根据您要查看的数据,尝试以下操作:

select p.address, c.name, c.phone
from Property p
join Clients c on p.client_id = c.id
where p.PropertyType = 'House'

【讨论】:

  • 这样就成功了!这是我在看到这个答案之前通过做一些研究最终使用的。但这回答了整体路径对我有用! "SELECT * FROM Client INNER JOIN Property ON Client.Id = Property.Lead_Id WHERE Property.PropertyType = 'House'"
【解决方案2】:

您可以使用类似

的方式将其简化为单个查询
SELECT * FROM Client WHERE Client_id IN (SELECT Client_id FROM Property WHERE PropertyType='House');

另外确保您已准备好所有索引。

【讨论】:

  • 当我运行时,我得到一个错误 Unknown column 'Client_Id' in 'IN/ALL/ANY subquery' 我确保我在属性表中有该列
  • 自行测试子查询:SELECT Client_id FROM Property WHERE PropertyType='House'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-27
相关资源
最近更新 更多