sql - 如何重写 sql 查询
问题描述
我有一个表 ORDER 没有定义索引、分区、键,我正在执行下面的 sql 查询以检索 CODE 以前 2 亿条记录的某个值开头。运行时间太长。有什么办法可以重写这个查询。
SELECT * FROM ORDER WHERE ROWNUM <= 200000000 AND ((CODE LIKE '1234423678%' ));
解决方案
你有没有尝试过:
SELECT * FROM ORDER
WHERE ROWNUM <= 200000000 AND (SUBSTR(CODE,1,10) = '1234423678');
不确定这是否会有所作为,但也许会。
推荐阅读
- javascript - 没有使用 useState() 更新反应状态
- java - 空字节数组是否会在 JVM 上立即清除?
- c++ - 在 C++ 映射上使用迭代器擦除
- sql - Django:使用跨 M2M 映射到另一个表的字段注释表
- mysql-8.0 - MySQL 8 获取 PROCEDURE/FUNCTION 完整定义
- javascript - Angular NPM 运行产品:错误 npm ERR!缺少脚本:产品
- ansible - 在 ansible playbook 中有条件地使用 vars_files
- javascript - 在 JavaScript 中比较 dateTimes 不起作用
- c++ - MSBuild 与 Visual Studio 2019 - 不会选择其他包含目录
- computational-geometry - 数值计算多边形的立体角