Java “oracle 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

我有一张桌子。我必须查询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 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

从性能角度来看,
中的
应该很好。您是否在询问如何以编程方式生成值列表?您到底想更改什么?为什么?从性能角度来看,
中的
应该可以。您是否在问如何以编程方式生成值列表?您到底想更改什么?为什么?从性能角度来看,
中的
应该可以。您是否在问如何以编程方式生成值列表?您到底想更改什么?为什么?从性能角度来看,
中的
应该可以。您是否在问如何以编程方式生成值列表?你到底想改变什么?为什么?你可以这样做,但为什么会更好?这就是它的意思,优化器可以潜在地将查询的一种形式转换为另一种形式。就性能和执行方式而言,这完全是相同的查询。您可以这样做,但为什么会更好呢?这就是它的意思,优化器可以潜在地将查询的一种形式转换为另一种形式。就性能和执行方式而言,这完全是相同的查询。您可以这样做,但为什么会更好呢?这就是它的意思,优化器可以潜在地将查询的一种形式转换为另一种形式。就性能和执行方式而言,这完全是相同的查询。您可以这样做,但为什么会更好呢?这就是它的意思,优化器可以潜在地将一种形式的查询转换为另一种形式。就性能和执行方式而言,这是完全相同的查询。