我有以下查询:
SELECT `Product_has_ProductFeature`.`productId`, `Product_has_ProductFeature`.`productFeatureId`, `Product_has_ProductFeature`.`productFeatureValueId`
FROM `Product_has_ProductFeature`
WHERE `productId` IN (...'18815', '18816', '18817', '18818', '18819', '18820', '18821', '18822', '18823', '18824', '18825', '18826', '18827', '18828', '18829', '18830', '18831', '18832', '18833', '18834'..)
我有大约 50000 个产品 ID。执行时间为 20 秒。我怎样才能让它更快?
最佳答案
这更像是一条评论。
返回 50,000 行可能需要一些时间,具体取决于您的应用程序、行大小、网络以及服务器的繁忙程度。
进行比较时,应确保值具有相同类型。因此,如果 productId
是数字,则删除单引号。
如果值都是连续的,则避开列表,只需执行以下操作:
where productid >= 18815 and productid <= 18834
最后,通常建议在 productid
上建立索引。然而,在某些情况下,索引可能会使性能变差。这取决于数据的大小以及可用于页面和数据缓存的内存大小。
MySQL 高效地实现了in
(使用二叉树)。大部分开销可能是编译查询而不是执行查询。如果表中有值,连接
可能会更有效。
关于mysql - SQL大查询优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32500583/