Reg - Index of the functional basis

Hi all
In our application, we have a clue of the type below
CREATE INDEX sme_idx ON sme_tbl(sme_col,1,2)
And when I view its details in ALL_INDEXES noted as NORMAL of BASIC FUNCTIONAL index, from my first glance I misread it as SUBSTR, but I'm not able to represent something of the syntax.

What does '1.2' mean here? What is the use of having this kind of clue?

Please help me.

He held a function-based index, because the right-hand columns are constants.

If it is not uncommon to have a constant leak like that to be sure that nulls in SME_COL are included in the index, I don't understand why you would have two constant end. I would have thought that it was an error, typo, or just a complete misunderstanding.

Tags: Database

Similar Questions

  • Impossible to apply the functional base index


    Hi gurus

    For my learning, I am applying the functional index of basic but looks like I'm doing something wrong, see below for my code and appreciate your answers.

    Code example

    DROP TABLE my_table;

    CREATE TABLE my_table

    (

    AA: PRIMARY KEY number 4

    aa_desc VARCHAR2 (30),

    aa_type VARCHAR2 (10)

    ) ;

    CREATE INDEX first_name_idx ON my_table (aa > 10 and upper (aa_desc) = "SA" and aa_type is null).

    Thanks in advance

    Concerning

    Shu

    SQL> create table my_table1
      2    (
      3      aa      number(4) primary key,
      4      aa_desc varchar2(30),
      5      aa_type varchar2(10)
      6    ) ;
    
    Table created.
    
    SQL> create or replace function my_table_check
      2  (
      3    p_aa      in my_table.aa%type
      4  , p_aa_desc in my_table.aa_desc%type
      5  , p_aa_type in my_table.aa_type%type
      6  )
      7  return number
      8  deterministic
      9  as
     10  begin
     11     if (p_aa > 10 and upper(p_aa_desc) = 'SA' and p_aa_type is null) then
     12       return 1;
     13     else
     14       return 0;
     15     end if;
     16  end;
     17  /
    
    Function created.
    
    SQL> create index my_table_idx on my_table1(my_table_check(aa, aa_desc, aa_type));
    
    Index created.
    
    SQL> explain plan for
      2  select *
      3    from my_table1
      4   where my_table_check(aa, aa_desc, aa_type) = 1;
    
    Explained.
    
    SQL> set linesize 130
    SQL> set pagesize 200
    SQL>
    SQL> select * from table(dbms_xplan.display);
    
    PLAN_TABLE_OUTPUT
    ----------------------------------------------------------------------------------------------
    Plan hash value: 3962327877
    --------------------------------------------------------------------------------------------
    | Id  | Operation                   | Name         | Rows  | Bytes | Cost (%CPU)| Time     |
    --------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT            |              |     1 |    37 |     1   (0)| 00:00:01 |
    |   1 |  TABLE ACCESS BY INDEX ROWID| MY_TABLE1    |     1 |    37 |     1   (0)| 00:00:01 |
    |*  2 |   INDEX RANGE SCAN          | MY_TABLE_IDX |     1 |       |     1   (0)| 00:00:01 |
    --------------------------------------------------------------------------------------------
    Predicate Information (identified by operation id):
    ---------------------------------------------------
       2 - access("V195588"."MY_TABLE_CHECK"("AA","AA_DESC","AA_TYPE")=1)
    Note
    -----
       - dynamic sampling used for this statement
    
    18 rows selected.
    
    SQL>
    
  • What is the purpose of the function Array Index in the example attached?

    Hello

    I'm fighting with the Array Index function. I found the attached VI on the OR site which was exactly what I wanted to do, but rather than simply accept that it works and use it, I wanted to understand.

    What is the purpose of the function Index of table inside the while loop? If I put a probe on part and on the other, the values are the same, but if I remove the service and connect directly to the > function, I get an error.

    I do not understand the tables but I don't understand what is happening here. Any help would be appreciated gratefully.

    Thanks in advance.

    It is just picking the first reading of the table in the waveform.  If it's good enough (I'd take at least the average of N samples), why not cela?

  • That could leave gaps in the index, but the built-in function NEXT allows you to iterate over any series of clues.

    Hello

    can you please explain the below topic?

    That could leave gaps in the index, but the built-in function NEXT allows you to iterate over any series of clues. -> this line

    1. Arrays have a fixed upper bound, but the nested tables are unlimited (see Figure 5-1). Thus, the size of a nested table can increase dynamically.

    Table in figure 5-1 against the nested Table

    Text description of pls81016_array_versus_nested_table.gif follows
    Description of the illustration pls81016_array_versus_nested_table.gif

    • Tables should be dense (have consecutive indices). So, you can delete individual items from a table. Initially, the nested tables are dense, but they can become sparse (have non-consecutive indexes). So, you can remove items from a table nested by using the integrated procedure DELETE . That could leave gaps in the index, but the built-in function NEXT allows you to iterate over any series of indexes.

    Hello

    Look at the second half of the Figure 5-1, the 'Nested Table after destruction".  X (9), x.5 and x (2) elements have been removed, so the index values are 1, 3, 4, 6, 7, 8 and 10.  There is a gap between 1 and 3, another gap between 4 and 6 and another gap between 8 and 10.

    You could not use a simple FOR loop:

    FOR j IN 1... 10

    LOOP

    ...

    END LOOP;

    to iterate over a collection of rare as this, but you can use a loop where you get with the FOLLOWING indices:

    j: = x.FIRST;

    Then j IS NOT NULL

    LOOP

    ...

    j: = (j) x.NEXT;

    END LOOP;

  • create indexes on the upper part of the column - reminders function is not deterministic

    Hi all

    I'm having a problem on a database. When you create an index on an existing table on the upper part of a column, Oracle triggers an ORA-30553. I've done this 40 index other databases, with the same and different versions, without problem. When you create the index on a copy of the table, it is created with success...

    Here is the code:

    SQL > select * from v version $;

    BANNER

    --------------------------------------------------------------------------------

    Oracle Database 11 g Release 11.2.0.3.0 - 64 bit Production

    PL/SQL Release 11.2.0.3.0 - Production

    CORE Production 11.2.0.3.0

    AMT for 64-bit Windows: Version 11.2.0.3.0 - Production

    NLSRTL Version 11.2.0.3.0 - Production

    SQL > CREATE INDEX IDX_SRE_E_MAIL_UPPER on fsynrelatie (upper (sre_e_mail)) tablespace idx;

    CREATE the INDEX IDX_SRE_E_MAIL_UPPER on idx tablespace fsynrelatie (upper (sre_e_mail))

    *

    ERROR on line 1:

    ORA-30553: the function is not deterministic

    SQL > create table fsynrelatie2 in select * from fsynrelatie;

    Table created.

    SQL > CREATE INDEX IDX_SRE_E_MAIL_UPPER on fsynrelatie2 (upper (sre_e_mail)) tablespace idx;

    The index is created.

    SQL > drop table fsynrelatie2;

    Deleted table.

    SQL > show parameter query_rewrite_enabled

    VALUE OF TYPE NAME

    ------------------------------------ ----------- ------------------------------

    query_rewrite_enabled string TRUE

    Hi all

    Thank you for the answers. I found the problem:

    On the table, there are 54 index:

    Select index_type, uniqueness, count (*) from user_indexes where table_name = 'FSYNRELATIE '.

    Index_type group, uniqueness

    INDEX_TYPE SINGLE CHARACTER COUNT (*)
    FIELD ARE NOT UNIQUE 1
    BASED ON A NORMAL FUNCTION ARE NOT UNIQUE 4
    NORMAL UNIQUE 3
    NORMAL ARE NOT UNIQUE 46

    3 unique indexes are the primary key and 2 another witch number field contains unique identifiers for rows in other systems. The domain index is an index of Oracle text on a couple of fields. There are 3 indices of function based on a high on a field and 1 on an individual function. This last clue has caused the problem. Apparently, on the creation, this function is deterministic, but when rolling a new version of the software. It became a non-deterministic function. When I delete the index, my original index on upper (sre_e_mail) has been created successfully! Now, I did the deterministic function again and could recreate the function without problem.

    Thanks for your comments!

  • Using the function PLSQL return Record Type Index of Tables in ADF

    I have a PLSQL function, a return type. My ultimate goal is to take this binary integer index Table and print it on the screen...

    CREATE OR REPLACE PACKAGE my_pkg IS
     
    TYPE t_col IS RECORD(
     
    i NUMBER,
     
    n VARCHAR2(30));
     
    TYPE t_nested_table IS TABLE OF t_col;
     
      FUNCTION return_table RETURN t_nested_table ;
    END my_pkg;


    OPTION 1:

    1) has anyone got best practices to accept plsql RECORDS returned by a function?

    Here is an example.

    http://adfpractice-Fedor.blogspot.SG/2013/01/working-with-PLSQL-procedures-in-ADF-BC.html

    But it will be a lot of work... first of all accept the results in a loop... then store in a temporary storage can be a few VO or global temporary table and then display them on the page


    OPTION 2:

    Using the functions PIPLELINED and use in the select statement.  While I can use this select statement in the SQL query to create VO... and drag and drop the VO...

    CREATE OR REPLACE PACKAGE my_pkg IS
     
    TYPE t_col IS RECORD(
     
    i NUMBER,
     
    n VARCHAR2(30));
     
    TYPE t_nested_table IS TABLE OF t_col;
     
      FUNCTION return_table RETURN t_nested_table PIPELINED;
    END my_pkg;


    select * from table(my_pkg.return_table);


    Wow... I'm so smart! .. really possible?  who is the best/possible/recommended option?

    I'm sure that will be the question most read by many who wants to use PLSQL instead of JAVA to the treatment and CHOSEN to use only to display the output of the PLSQL functions or procedures.


    Thank you

    Rahul


    Dario

    Do you mean the scope of the defined Type pkg will be finished?

    I created guy outside the pkg as 'Create Type' if it works in this case?

    Yes, level objects schema (created with "create or replace type...") can be used in java and this can work.

    I think that then the scope of this TYPE will remain until the user session passes.

    Object definitions is not worn, but have their bodies.

    So, if you instantiate the data level object type schema in a plsql function, scope of this object is this function.

    Of course, if you instantiate the object as a variable package, then life of this object is equal to the lifetime of the package (which usually equals life of session db).

    Dario

  • SQL tuning advisor recommnds to create the function SYS_OP_C2C function index

    I have a large table and an index on it. I use a tool to fill data, this simple tool submits the sql for Oracle DB and it does NOT index to use for requests. When I run the sql tuning advisor, he recommends to create additional indexes and use the SYS_OP_C2C function, which I don't want.

    When I run the query through sql plus picks it up in the index.
    Someone of you came, why its recommend that additional nonsense?

    create index abc.xxxx on this_table (SYS_OP_C2C ("this_column"));

    Thank you

    The internal Oracle SYS_OP_C2C function perform the conversion of a set of characters to another set of characters - C (haracterSet) 2 c (haracterSet). There are situations where you will see this conversion without explicit, as in this case command that should be a sign that the data types are not the same and the implicit conversion takes place and this could also be a problem from the point of view performance because it can disable the use of the index.

    Make sure you the characterset and nls set of all of the database and the tool are the same.
    Make sure that the data type of the column in the index is the same as the database.
    Confirm the ETL vendor for your database support and fixes, etc..

    Optimizer will only advise to use this function when the data type or the character set does not match.

    Thank you
    Kerry

  • CBO bug or not, or else develop do not consider the function index

    SQL> create table test_fun_or as select object_id+sysdate id,object_name from        
    
      2  dba_objects;
    
    Table created.
    
    SQL> create index i_test_fun_or on test_fun_or(id,'a') nologging;   
    
    //I don't know why oracle consider it as function index
    
    Index created.
    
    SQL> create index i_test_fun_or_1 on test_fun_or(object_name) nologging;
    
    Index created.
    
    SQL> set autot trace exp
    
    SQL> exec dbms_stats.gather_table_stats(user,'TEST_FUN_OR',estimate_percent=>null,method_opt=>'for all columns size 1');
    
     
    
    PL/SQL procedure successfully completed.
    
     
    
    SQL> select * from test_fun_or where id=sysdate or object_name='aa';
    
     
    
    Execution Plan
    
    ----------------------------------------------------------
    
    Plan hash value: 3247456674
    
     
    
    ---------------------------------------------------------------------------------
    
    | Id  | Operation         | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
    
    ---------------------------------------------------------------------------------
    
    |   0 | SELECT STATEMENT  |             |     3 |    87 |   219   (3)| 00:00:03 |
    
    |*  1 |  TABLE ACCESS FULL| TEST_FUN_OR |     3 |    87 |   219   (3)| 00:00:03 |
    
    ---------------------------------------------------------------------------------
    
     
    
    Predicate Information (identified by operation id):
    
    ---------------------------------------------------
    
     
    
       1 - filter("OBJECT_NAME"='aa' OR "ID"=SYSDATE@!)
    
     
    
    SQL> select /*+ use_concat */ * from test_fun_or where id=sysdate or object_name='aa'; 
    
    //or expand don't use index i_test_fun_or
    
     
    
    Execution Plan
    
    ----------------------------------------------------------
    
    Plan hash value: 3161566054
    
     
    
    ------------------------------------------------------------------------------------------------
    
    | Id  | Operation                    | Name            | Rows  | Bytes | Cost (%CPU)| Time     |
    
    ------------------------------------------------------------------------------------------------
    
    |   0 | SELECT STATEMENT             |                 |     3 |    87 |   224   (3)| 00:00:03 |
    
    |   1 |  CONCATENATION               |                 |       |       |            |          |
    
    |*  2 |   TABLE ACCESS FULL          | TEST_FUN_OR     |     1 |    29 |   219   (3)| 00:00:03 |
    
    |*  3 |   TABLE ACCESS BY INDEX ROWID| TEST_FUN_OR     |     2 |    58 |     5   (0)| 00:00:01 |
    
    |*  4 |    INDEX RANGE SCAN          | I_TEST_FUN_OR_1 |     2 |       |     3   (0)| 00:00:01 |
    
    ------------------------------------------------------------------------------------------------
    
     
    
    Predicate Information (identified by operation id):
    
    ---------------------------------------------------
    
     
    
       2 - filter("ID"=SYSDATE@!)
    
       3 - filter(LNNVL("ID"=SYSDATE@!))
    
       4 - access("OBJECT_NAME"='aa')
    
     
    
    SQL> drop index i_test_fun_or;
    
     
    
    Index dropped.
    
     
    
    SQL> create index i_test_fun_or on test_fun_or(id,object_name) nologging;
    
     
    
    Index created.
    
     
    
    SQL> alter table test_fun_or modify object_name not null;
    
     
    
    Table altered.
    
     
    
    SQL> select /*+ use_concat */ * from test_fun_or where id=sysdate or object_name='aa';
    
     
    
    Execution Plan
    
    ----------------------------------------------------------
    
    Plan hash value: 1705821130
    
     
    
    ------------------------------------------------------------------------------------------------
    
    | Id  | Operation                    | Name            | Rows  | Bytes | Cost (%CPU)| Time     |
    
    ------------------------------------------------------------------------------------------------
    
    |   0 | SELECT STATEMENT             |                 |     3 |    87 |     8   (0)| 00:00:01 |
    
    |   1 |  CONCATENATION               |                 |       |       |            |          |
    
    |*  2 |   INDEX RANGE SCAN           | I_TEST_FUN_OR   |     1 |    29 |     3   (0)| 00:00:01 |
    
    |*  3 |   TABLE ACCESS BY INDEX ROWID| TEST_FUN_OR     |     2 |    58 |     5   (0)| 00:00:01 |
    
    |*  4 |    INDEX RANGE SCAN          | I_TEST_FUN_OR_1 |     2 |       |     3   (0)| 00:00:01 |
    
    ------------------------------------------------------------------------------------------------
    
     
    
    Predicate Information (identified by operation id):
    
    ---------------------------------------------------
    
        2 - access("ID"=SYSDATE@!)
    
       3 - filter(LNNVL("ID"=SYSDATE@!))
    
       4 - access("OBJECT_NAME"='aa')

    Jinyu wrote:
    Thanks Jonathan, I don't have 11.2.0.2 on-site, I'll test it later, I just test it on 11.2.0.1

    If you see the notes of fixed a bug fixes for 11.2.0.2 Group (Doc ID:1179583.1) it's bug 8352378 "allow index GOLD-Expansion functions.

    Concerning
    Jonathan Lewis

  • index on the column using custom function

    Can we create index on the column using custom function?

    http://www.dbasupport.com/Oracle/ora8/FBI.shtml

    Kind regards
    Kaila Mahesh

  • Indexing and the integrity constraint functionality difference

    Hello

    Sometimes I confuse me, how we can distinguish between indexing and the integrity of the features of constraint. Please let me know or if any available doc.


    Kind regards
    REDA

    I assume you mean unique vs unique index constraints?

    The sole (or Primary Key) constraints provide additional metadata that can be used by the optimizer.
    An index will be used to help the database to apply the constraint (it is created, or if there is it will be "captured" by coercion)

    Insofar as a document [url http://docs.oracle.com/cd/E11882_01/server.112/e25789/toc.htm] that's something, you should read

  • HP Envy 17: Reverse the function keys

    Hey guys,.

    My laptop is a very good laptop, with a good graphics card nvidia an i7 cpu and even 16 GB of ram. Even with a 17 inch screen full HD 1920 * 1080, making incredible games! Even GTA V for Pc works quite well on this laptop powerful.

    All of these things are an amazing gaming PC, however, it has a match no one back which makes it almost impossible to play a game with good fluidity.

    Present a defect of fatal game is actually the keyboard, but to be more precise, it is the function keys. The HP Envy 17 has two F1 - F12 and INSERT key. However, these are the secondary keys. Primary keys are keys system that changes the brightness or volume. That means if I want to use F2 in a game, I have to hold the function key, and then press F2.

    This seems minor, but when you play, it can be annoying to have to hold down a function key just to use one of the F keys.

    Dies, does anyone know how to get this fixed and reverse the trend, in this way if I want to cut my cell phone that I have to press the function, then the F6 key. I hope that people know what I mean and please if you know of a fix would be great if you could post it below.

    Thank you
    Connor Burnett.

    Hello

    Yes, I used the F1 - F12 keys on a daily basis for the last 35 years or so, but fortunately I always use external keyboards using laptops (on or off a docking station). You may not share, but disable. Please use the following article:

    http://support.HP.com/au-en/document/c02035108

    Kind regards.

  • Search index of the secuence valuation until you reach a constant value table...

    Hello

    I have an arry of secuence RR values (its peak at the time of peak of ECG wave is seconds). I know that the added value of the paintings is the total time of sample data.

    I would like to separate in different charts in the representation of every hour of recorded data.

    I need to get a way to get the index where the number of added values are-online 3600 s (1 h).

    So that I can know the index of the arrays values to get the correct index in chart 1 h values, another index for another hour for an another graph,... so until you get the hourly chart several data can show.

    I hope you understand me.

    Best regards.

    Modulo division is performed by the function Quotient & remains on the digital palette.

    Work with tables and data DBL or integer types.

    When I use the method that Mike designed, in my view, the VI sometimes lacks a time transition. This happens with the simulated data that I generate because it is possible that the rest is different from zero. For example, this can happen if the accumulated sum is 3599.4 s and the next RR interval is 1.3 s. Which gives the following sum = 3600.7 s. The conversion by multiples of the amounts of 3599 and 3601. The remains are 3599 and 1 after modulo division. None are exactly equal to zero.

    I've changed this option to use DBL and then look the big negative transition. The minimum value may be with the largest range of RR in the data. However, there is always a great transition close to 3600 to near zero.

    Lynn

  • Update of the indicators of the façade is trolling in the test of the functions in the provider DLL

    I'm looking to see if someone can explain a behavior to display weird LabVIEW I see when to test some timeout works in a third party DLL. I have a work around in place but I would still like to know why, without the workaround, the information displayed by the indicators on the front panel are not synchronized with what is happening in the execution of the VI, even though I tried all sorts of things to impose the synchronization. Note that to run the VI in a useful way, you need to be able to communicate with a Galil axes via an Ethernet controller, and which, for the most part, limited this discussion to what the experts among you know happen under the hood of LabVIEW in situations like this.

    This is what looks like the VI when my work around (false wait added) is active. It's a small state machine that uses the elements of the array "Test Sequence" to tell him what to do in each step of its implementation. Here he plays a first time-out value, sets a new value of timeout, reading again, the timeout by asking a READING of the controller (without having first asked to say anything), followed by restoring the initial time-out and then tests to stop.  The two indicators in the red rectangle are there to show the current status of the execution, and it is this pair of indicators which are not synchronized with the State of the actual program.

    When execution completes, it is what we see.

    If the false timeout is too short, then the indicators are not synchronized with the State of the program, or in this case, with the other.  Note that the only time wherever the VI display is static enough for me to take a screenshot as it is during the period of "Test Timeout. When the time-out occurs Finally, things be synchronized and the same results are displayed.

    Here's the code.  I am also attaching a folder zipped with the code, just because I don't know if the extracts are smart enough to include all the dll referenced by library call nodes.

    Here on the left of the loop indicator 'State' and 'Index' terminals can be seen. The 'fake Wait' needed to make the indicators work synchronously appears below in the same area. Before coming with this 'fix' things I've tried, what has not worked, were:

    • addition of the structure of flat sequence seen here with the indicators in the first panel
    • Entrance to the 'value' property nodes using linked to two indicators with their outputs error Garland at the entrance of the error on the function 'G Read' (test timeout).
    • defining indicators for "synchronous display" (apparently this parameter actually only works with the multi-threaded code, which I don't believe it is)
    • setting false property to "postpone updates on the front panel.

    Another thing that worked linked a "probe" to any data path entrance side of the conditional structure. I thought that it causes also a few milliseconds of delay as the expectation.

    My best guess at what happens is that display updates are "launch and forget" actions that occur on parallel execution paths in the single execution thread and function on obtaining some of the main process to complete time slices. But when the main process is the name of an external library, which, outside the library can't share time with all other processes that can run in the same thread.  All this makes sense?

    This is because all these CFLN calls to the dll are set to run in the UI thread (to view the color orange on the top of the node).

    If they eat the cycles in the UI thread, they may not leave enough cycles to LabVIEW to make updates to the user interface of the front panel.

    What make these 3 part of the dll?  They need to run in the UI thread?  Is there a problem with the standby so that the DLLs are not pounding the UI thread?

  • Show largest index in the array with the value 'True '.

    Hello

    Is it possible to show the maximum number of index with the value "true", as indicated under?

    I can show the value on what index series of 'real' ends with the function 'Table Max and Min', but when there
    a fake between these True, it shows that the index of the true left of the fake.

    I don't need to know the size of the table, because he must stay 8

    File is attached

    Hi Stef,

    Here you go:

  • Get the current Index of the Ring System

    I need to know the index of the ring box that is currently displayed on the front panel during execution.

    The ring box values do not necessarily correspond to their clues so I can just wire the ring box itself to property [] DisabledItems.

    The way I'm going to get the index of the item "displayed" the control of the ring is as follows:

    A reading in the strings [] property returns an array of strings of the 'Elements' of the order of the ring.

    A reading in the RingtText.Text that returns the string value of the current item displayed in the control of the ring.

    I use the search function to search in the array of strings to the current text, and it gives me the index of the current item displayed in the control of the ring.

    Is there a way to get the index of the currently displayed index of the ring directly control?

    In a Word, no.

    the method that you use is the easiest.  If the srtings are very long, you could unbudle [channels] and property values and this table just to save a few (very minor) research paper.  Keep in mind, control system properties depend on the operating system

Maybe you are looking for