Spring Jdbc привязывает java.sql.timestamp к проблеме даты оракула

1

В настоящее время я использую Spring NamedParameterJdbcTemplate для ввода некоторых значений в sql. У меня возникают проблемы с производительностью, когда я java.sql.Timestamp два значения java.sql.Timestamp в sql, в столбце oracle которого используется тип DATE и выполняется.

Это очень медленно (около 4 минут), но когда я запускаю его через sql-разработчик, он выполняется менее чем за секунду, так как у меня есть индекс в столбце DATE. Вот фрагмент моего журнала отладки:

select * from test_table.test_column where eventts >= :startDate and eventts <= :endDate and loginname= :loginname and channelind= :channelind
2014-04-21 15:02:50 48416 [http-8080-1] DEBUG org.springframework.jdbc.core.JdbcTemplate  - Executing prepared SQL query
2014-04-21 15:02:50 48417 [http-8080-1] DEBUG org.springframework.jdbc.core.JdbcTemplate  - Executing prepared SQL statement [select * from test_table.test_column where eventts >= ? and eventts <= ? and loginname= ? and channelind= ?]
2014-04-21 15:02:50 48417 [http-8080-1] DEBUG org.springframework.jdbc.datasource.DataSourceUtils  - Fetching JDBC Connection from DataSource
2014-04-21 15:02:50 48438 [http-8080-1] DEBUG org.springframework.jdbc.core.StatementCreatorUtils  - Setting SQL statement parameter value: column index 1, parameter value [2014-04-21 12:02:38.0], value class [java.sql.Timestamp], SQL type 93
2014-04-21 15:02:50 48439 [http-8080-1] DEBUG org.springframework.jdbc.core.StatementCreatorUtils  - Setting SQL statement parameter value: column index 2, parameter value [2014-04-22 00:00:00.0], value class [java.sql.Timestamp], SQL type 93
2014-04-21 15:02:50 48439 [http-8080-1] DEBUG org.springframework.jdbc.core.StatementCreatorUtils  - Setting SQL statement parameter value: column index 3, parameter value [MY_LOGIN], value class [java.lang.String], SQL type unknown
2014-04-21 15:02:50 48439 [http-8080-1] DEBUG org.springframework.jdbc.core.StatementCreatorUtils  - Setting SQL statement parameter value: column index 4, parameter value [WEB], value class [java.lang.String], SQL type unknown

Что мне здесь не хватает? Является ли Oracle кастом значения в TIMESTAMP приводит к потере индекса, который у меня есть в столбце DATE "eventts"?

Теги:
spring
jdbc

1 ответ

0

Думаю, твоя догадка правильная. Когда у тебя есть

select something from some_table where column1 = :val1

и va1 не имеет тот же тип, что и столбец1, Oracle будет делать:

select something from some_table where to_val1type(column1) = :val1

Функция to_val1type не существует, она будет определяться по контексту (TO_DATE, TO_NUMBER и т.д.).

либо сделайте свой параметр того же типа, либо используйте TO_XXX fuctnion самостоятельно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню