Индекс, работающий в Oracle

#sql #oracle #indexing

#sql #Oracle #индексирование

Вопрос:

 String s1 = "create table "  tableName 
        "(id number NOT NULL PRIMARY KEY, "  
        "url varchar(1000) NOT NULL, "  
        "urlHash varchar(255) NOT NULL, "  
        "contentHash varchar(255), "  
        "modDate varchar(30), "  
        "contentLocation varchar(100), "  
        "status integer, "  
        "lastCrawlDate varchar(30)) ";

    String s3 = "create sequence "  sequenceName  " start with 1 increment by 1 nomaxvalue";

        stmt=conn.createStatement();
        stmt.executeUpdate(s1);
        stmt.executeUpdate(s3);

    ps = conn.prepareStatement (
              "INSERT INTO testing (id, url, urlHash, contentHash, modDate, contentLocation, status, lastCrawlDate) VALUES(test_seq.nextval,?,?,?,?,?,?,?)");


              ps.setString (1, url);
              ps.setString (2, urlHash);
              ps.setString (3, contentHash);
              ps.setString (4, modDate);
              ps.setString (5, contentLocation);
              ps.setLong (6, status);
              ps.setString (7, lastCrawlDate);
 

И мой запрос выбора будет вращаться вокруг urlHash и ModDate. Итак, если я создам индекс для этих столбцов.

 CREATE INDEX hash_date_idx ON tableName (urlHash asc, modDate asc);
 

И затем, если я запущу запрос select на основе этих двух столбцов или одного столбца, то что будет происходить в фоновом режиме. Может кто-нибудь объяснить это, поскольку я новичок в мире баз данных oracle. И какой индекс, как правило, является лучшим в этом случае. И на каком основании мы должны его использовать.

 Select * from tabelName where urlHash like '%asdreefjhsawofjkwjfkwqdskdjksdwq%';
 

Ответ №1:

Ведущий подстановочный знак с like оператором заставит oracle игнорировать индекс urlHash .

Вы можете выполнить любое из следующих действий для повышения производительности:

  1. используйте подсказки по индексу с помощью select
     select /* index(tableName,hash_date_idx)*/ * from tabelName ...
     
  2. используйте КОНТЕКСТ полнотекстовой индексации для urlHash столбца.