因为每个账号,都有权限范围管控。
比如一共有10个仓库,账号T0001打开出库单,他只能看到 他拥有权限范围(只分配了5个仓库)的出库单。
EXPLAIN
SELECT t1.WarehouseId,t1.recno
FROM t_stock_outware t1
WHERE 1=1
AND t1.WarehouseId IN ('ad21e8e58c76420da5ffaf9c63e0e47d','986d6b47a94945cea59fe7654bf0503c',
'05682ab8f672424aaaf3e497080f3779','bd3ce816e4a04b448c5b939bf29c0181',
'0e27fcaa84d94c298c11209b5c50ba56','be9ca229bfba4bf98137697599c7db1d')
ORDER BY t1.recno
LIMIT 0,800WarehouseId,recno 建了索引执行计划:
查询是走了索引,但由于USING filesort ,导致查询很慢。(去掉order by 速度很快)
如果是用 where warehouseid='XXX' order by recno 这就不会有 USING filesort (速度也很快)
但用 where warehouseid in ('XXX','XXXX') order by recno ,就有会USING filesort
请教有没有什么好的方法解决。
比如一共有10个仓库,账号T0001打开出库单,他只能看到 他拥有权限范围(只分配了5个仓库)的出库单。
EXPLAIN
SELECT t1.WarehouseId,t1.recno
FROM t_stock_outware t1
WHERE 1=1
AND t1.WarehouseId IN ('ad21e8e58c76420da5ffaf9c63e0e47d','986d6b47a94945cea59fe7654bf0503c',
'05682ab8f672424aaaf3e497080f3779','bd3ce816e4a04b448c5b939bf29c0181',
'0e27fcaa84d94c298c11209b5c50ba56','be9ca229bfba4bf98137697599c7db1d')
ORDER BY t1.recno
LIMIT 0,800WarehouseId,recno 建了索引执行计划:
查询是走了索引,但由于USING filesort ,导致查询很慢。(去掉order by 速度很快)
如果是用 where warehouseid='XXX' order by recno 这就不会有 USING filesort (速度也很快)
但用 where warehouseid in ('XXX','XXXX') order by recno ,就有会USING filesort
请教有没有什么好的方法解决。
主要还是 USING filesort 引起。
如果索引的顺序 (WarehouseId,recno ) 改成 (recno, WarehouseId ), 是可以解决这个问题,
但会 导致 where warehouseid='XXX' order by recno 不会走索引,变成ALL 查询。
explain select ....
及
show index from 以供分析