Viskagite svoe mnenie

generalo
Дата: 22.02.2007 17:33:23
Zdravstvuite ,
podskagite pogaluista(mi pridergivalis' documentacii) - pravil'no li napisana query. Esli net to gde promah

SELECT codifica_sist_arrivo
  FROM trascodifica
 WHERE (    (    (    (    RTRIM (compagnia) = RTRIM (:b2)
                       AND RTRIM (sistema_partenza) = RTRIM (:b3)
                      )
                  AND RTRIM (sistema_arrivo) = RTRIM (:b4)
                 )
             AND RTRIM (dominio_sist_arrivo) = RTRIM (:b5)
            )
        AND RTRIM (codifica_sist_partenza) = RTRIM (:b6)
       )
Execution Plan
----------------------------------------------------------
Plan hash value: 3970702705

----------------------------------------------------------------------------------
| Id  | Operation         | Name         | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |              |     1 |    34 |    42   (3)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL| TRASCODIFICA |     1 |    34 |    42   (3)| 00:00:01 |
----------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter(RTRIM("COMPAGNIA")=:B2 AND RTRIM("SISTEMA_PARTENZA")=:B3
              AND RTRIM("SISTEMA_ARRIVO")=:B4 AND RTRIM("DOMINIO_SIST_ARRIVO")=:B5 AND
              RTRIM("CODIFICA_SIST_PARTENZA")=:B6)


Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
        184  consistent gets
          0  physical reads
          0  redo size
        173  bytes sent via SQL*Net to client
        224  bytes received via SQL*Net from client
          1  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          0  rows processed
Eto plan_table bes indexa po funczii

A vot plan_table s indexom po funczii:

Execution Plan
----------------------------------------------------------
Plan hash value: 327769594

----------------------------------------------------------------------------------------------------
| Id  | Operation                   | Name                 | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |                      |     1 |    35 |    40   (0)| 00:00:01 |
|*  1 |  TABLE ACCESS BY INDEX ROWID| TRASCODIFICA         |     1 |    35 |    40   (0)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN          | XS_TEMP_TRASCODIFICA |    98 |       |     9   (0)| 00:00:01 |
----------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter(RTRIM("SISTEMA_PARTENZA")=:B3 AND RTRIM("SISTEMA_ARRIVO")=:B4 AND
              RTRIM("DOMINIO_SIST_ARRIVO")=:B5 AND RTRIM("CODIFICA_SIST_PARTENZA")=:B6)
   2 - access(RTRIM("COMPAGNIA")=:B2)


Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
          0  consistent gets
          0  physical reads
          0  redo size
        181  bytes sent via SQL*Net to client
        224  bytes received via SQL*Net from client
          1  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          0  rows processed

Mne kagetsia cto est'ulucshenia. Viskagite svoe mnenie, pogaluista
Elic
Дата: 22.02.2007 17:38:05
generalo
Mne kagetsia cto est'ulucshenia.
Это борьба со следствием. Устранением причины будет усечение в триггере + обыкновенный индекс.
generalo
Дата: 22.02.2007 18:40:56
Mogno popodrobnee pogaluista.
Elic
Дата: 22.02.2007 18:56:45
generalo
Mogno popodrobnee pogaluista.
Куда уж подробнее. Русского языка не понимаешь?
prokop
Дата: 22.02.2007 19:13:40
SELECT codifica_sist_arrivo
  FROM trascodifica
 WHERE compagnia LIKE RTRIM(:b2)||'%'
           ...
Stax.
Дата: 22.02.2007 19:33:30
prokop
SELECT codifica_sist_arrivo
  FROM trascodifica
 WHERE compagnia LIKE RTRIM(:b2)||'%'
           ...

!
SQL> select ename from emp where rtrim(ename)=rtrim('A');

no rows selected

SQL> select ename from emp where ename like rtrim('A')||'%';

ENAME
----------
ALLEN
ADAMS
.....
stax
generalo
Дата: 22.02.2007 19:35:39
Moi dorogoi ELIC , ne mogu poniat' cto vi imeete protiv menia - eto ug vasci problemi, no tol'ko tak nekrasivo vi otvecaete tol'ko mne. Za vascei deiatel'nostiu zdes' ia slegu mnogo - tol'ko mne vi otvecaete tak grubo.

A cto do predlogenia PROKOP to ne sovetuietsia ispol'zovat' LIKE v query - eto casto (practiceski vsegda) vedet k FULL TABLE SCAN. Moget bit' cto ia cego-to ne doponimaiu - To rastolkuite.
Elic
Дата: 22.02.2007 19:48:38
generalo
Moi dorogoi ELIC , ne mogu poniat' cto vi imeete protiv menia - eto ug vasci problemi, no tol'ko tak nekrasivo vi otvecaete tol'ko mne. Za vascei deiatel'nostiu zdes' ia slegu mnogo - tol'ko mne vi otvecaete tak grubo.
У тебя приступ обострения болезненного самолюбия? Мне нет никакого дела до тебя лично.
Что-то непонятно - задавай конкретные уточняющие вопросы. "Mogno popodrobnee pogaluista" - это не вопрос. RTFM
сочувствующий
Дата: 22.02.2007 20:13:39
generalo
Mogno popodrobnee pogaluista.

elic хотел сказать, что раз есть вероятность нахождения в данных лишних пробелов, в начале или конце, то от них нужно избавляться не во время выборки из базы по многу раз, а перед тем как эти данные должны оказаться в БД, т.е. пробелы обрезать в before триггере, а дальше использовать не индекс по функции, а обычный.
generalo
Дата: 22.02.2007 20:46:30
Dlia Elica - eto ne u menia a u vas problemi - kak v armii - poizdevatsia.
Moget a ponial koecto nepravil'no iz vachego soveta - poetomu i bil postavlen vopros - Popodrobnee , POGALUISTA .

Bol'scoe spasibo Socuvstvuescemu za raziasnenia. A cem plohi indexi po funcziam? Elic eto uge vopros so znako voprosa. Nu tak pokagite na cto vi sposobni.

A grubite vi tol'ko mne - eto FAKT.