mysql in (set) set过大,应该如何调优
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%
以上,求扫盲,求指导。