通过 orm 的 query 查出来的 sql 语句大概是这个样子的:
SELECT * FROM `table` WHERE (`table`.`column1` IN ('condition1', 'condition1', 'condition1', 'condition1', 'condition1', 'condition1') AND `table`.`column1` = '2021-01-03' AND NOT (`table`.`column2` IN ('condition2', 'condition2') AND `table`.`column2` IS NOT NULL) AND ((`table`.`column3` = 'column3`' AND NOT (`table`.`column3` = 'condition3' AND `table`.`column3` IS NOT NULL)) OR `table`.`column4` IN ('condition4', 'condition4', 'condition4')) AND (`table`.`column5` LIKE BINARY 'condition5%' OR `table`.`column6` = 'condition6'))
数据量大概 600w,查出来的结果有 100 条 在 mysql 里试了下,大概要花 7min,explain 得到的结果是,只有 column1, column2 用到了索引,我对每个 column 都建了索引,请问下还有什么办法优化阿。。。谢谢~
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.