mysql in (set) set过大,应该如何调优

thomasLand 2014-01-13 09:18:37
RT.
工作时遇到了一个问题,描述如下。
有多个数据库,分别是common,prod1,prod2,prod3,prod4,prod5
prod1,prod2,prod3,prod4,prod5 中均存在表t_order_detail(订单详情)。
[prod1,prod2,...prodn是为不同公司建立的库,不同的公司可能提供相同的产品]
common库中存在一张表t_order(订单表)。一张表t_customer(客户表)
任一个订单中存在一个字段customer在逻辑上是t_customer的外键,可以等值连接。但无外键约束。

现在有需求:
根据货物名称,查找所有购买此货物的客户。

问题如下:
select [distinct] o.customer_name from t_order o where o.customer_id in (
customer_id1,customer_id2,customer_id3,...,customer_idn
)
(因为这个问题是别人向楼主描述的,并没有详细的了解如何根据货物查找客户id)
这里P={customer_ids}过大,导致查询效率过低。【25条数据大约51秒】

已做操作:
o.customer_id索引已建立,customer_id在域中重复率不超过1%


以上,求扫盲,求指导。
...全文
109 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
thomasLand 2014-01-14
  • 打赏
  • 举报
回复
引用 1 楼 ryqiufeng0013 的回复:
单纯这个语句,你只是25条的 不可能 51秒。 也没什么可优化的。 你的时间是不是包含了 “根据货物查找客户id” 问题应该在这个地方,获取ID这个地方。
多谢,我先由你的指导,看看如何获取的集合。
十一路 2014-01-13
  • 打赏
  • 举报
回复
单纯这个语句,你只是25条的 不可能 51秒。 也没什么可优化的。 你的时间是不是包含了 “根据货物查找客户id” 问题应该在这个地方,获取ID这个地方。

56,912

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧