Java “oracle sql替换”;在;提前查询
我有一张桌子。我必须查询sql,例如:Java “oracle sql替换”;在;提前查询,java,sql,oracle,Java,Sql,Oracle,我有一张桌子。我必须查询sql,例如: select * from user1 where user1.id in(1,11,111) “1,11111”是会话中已知的值 现在我想替换中的,以提高性能,但是存在无法做到这一点 如果你知道怎么做,请告诉我。谢谢 您可以使用或 SELECT * FROM user1 WHERE user1.id = 1 OR user1.id = 11 OR user1.id = 111 您可以使用或 SELECT * FROM user1 WHERE user
select * from user1 where user1.id in(1,11,111)
“1,11111”是会话中已知的值
现在我想替换中的,以提高性能,但是存在
无法做到这一点
如果你知道怎么做,请告诉我。谢谢 您可以使用或
SELECT *
FROM user1
WHERE user1.id = 1
OR user1.id = 11
OR user1.id = 111
您可以使用或
SELECT *
FROM user1
WHERE user1.id = 1
OR user1.id = 11
OR user1.id = 111
您可以使用或
SELECT *
FROM user1
WHERE user1.id = 1
OR user1.id = 11
OR user1.id = 111
您可以使用或
SELECT *
FROM user1
WHERE user1.id = 1
OR user1.id = 11
OR user1.id = 111
我认为
中的操作符很好,并且完全可以完成它的功能。优化器将在内部将查询转换为或条件。为了简化和减少解析代码,IN将缩短查询并易于编写,而不是多个OR语句
解释计划将清楚地显示应用的过滤器已转换为多个或IN子句
比如说,
SQL> EXPLAIN PLAN FOR SELECT * FROM emp WHERE deptno IN(10,20,30);
Explained.
SQL>
SQL> SELECT * FROM TABLE(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
Plan hash value: 3956160932
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 13 | 481 | 3 (0)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| EMP | 13 | 481 | 3 (0)| 00:00:01 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
1 - filter("DEPTNO"=10 OR "DEPTNO"=20 OR "DEPTNO"=30)
13 rows selected.
因此,正如您所看到的,其中(10,20,30)
中的deptno被优化器解释为“deptno”=10或“deptno”=20或“deptno”=30
我认为中的操作符很好,并且完全实现了它的目的。优化器将在内部将查询转换为或条件。为了简化和减少解析代码,IN将缩短查询并易于编写,而不是多个OR语句
解释计划将清楚地显示应用的过滤器已转换为多个或IN子句
比如说,
SQL> EXPLAIN PLAN FOR SELECT * FROM emp WHERE deptno IN(10,20,30);
Explained.
SQL>
SQL> SELECT * FROM TABLE(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
Plan hash value: 3956160932
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 13 | 481 | 3 (0)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| EMP | 13 | 481 | 3 (0)| 00:00:01 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
1 - filter("DEPTNO"=10 OR "DEPTNO"=20 OR "DEPTNO"=30)
13 rows selected.
因此,正如您所看到的,其中(10,20,30)
中的deptno被优化器解释为“deptno”=10或“deptno”=20或“deptno”=30
我认为中的操作符很好,并且完全实现了它的目的。优化器将在内部将查询转换为或条件。为了简化和减少解析代码,IN将缩短查询并易于编写,而不是多个OR语句
解释计划将清楚地显示应用的过滤器已转换为多个或IN子句
比如说,
SQL> EXPLAIN PLAN FOR SELECT * FROM emp WHERE deptno IN(10,20,30);
Explained.
SQL>
SQL> SELECT * FROM TABLE(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
Plan hash value: 3956160932
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 13 | 481 | 3 (0)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| EMP | 13 | 481 | 3 (0)| 00:00:01 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
1 - filter("DEPTNO"=10 OR "DEPTNO"=20 OR "DEPTNO"=30)
13 rows selected.
因此,正如您所看到的,其中(10,20,30)
中的deptno被优化器解释为“deptno”=10或“deptno”=20或“deptno”=30
我认为中的操作符很好,并且完全实现了它的目的。优化器将在内部将查询转换为或条件。为了简化和减少解析代码,IN将缩短查询并易于编写,而不是多个OR语句
解释计划将清楚地显示应用的过滤器已转换为多个或IN子句
比如说,
SQL> EXPLAIN PLAN FOR SELECT * FROM emp WHERE deptno IN(10,20,30);
Explained.
SQL>
SQL> SELECT * FROM TABLE(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
Plan hash value: 3956160932
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 13 | 481 | 3 (0)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| EMP | 13 | 481 | 3 (0)| 00:00:01 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
1 - filter("DEPTNO"=10 OR "DEPTNO"=20 OR "DEPTNO"=30)
13 rows selected.
因此,正如您所看到的,其中(10,20,30)
中的deptno被优化器解释为“deptno”=10或“deptno”=20或“deptno”=30
从性能角度来看,
中的应该很好。您是否在询问如何以编程方式生成值列表?您到底想更改什么?为什么?从性能角度来看,
中的应该可以。您是否在问如何以编程方式生成值列表?您到底想更改什么?为什么?从性能角度来看,
中的应该可以。您是否在问如何以编程方式生成值列表?您到底想更改什么?为什么?从性能角度来看,
中的应该可以。您是否在问如何以编程方式生成值列表?你到底想改变什么?为什么?你可以这样做,但为什么会更好?这就是它的意思,优化器可以潜在地将查询的一种形式转换为另一种形式。就性能和执行方式而言,这完全是相同的查询。您可以这样做,但为什么会更好呢?这就是它的意思,优化器可以潜在地将查询的一种形式转换为另一种形式。就性能和执行方式而言,这完全是相同的查询。您可以这样做,但为什么会更好呢?这就是它的意思,优化器可以潜在地将查询的一种形式转换为另一种形式。就性能和执行方式而言,这完全是相同的查询。您可以这样做,但为什么会更好呢?这就是它的意思,优化器可以潜在地将一种形式的查询转换为另一种形式。就性能和执行方式而言,这是完全相同的查询。