Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Ticket #10331: change_oracleadapter_indexes_to_run_quicker.diff

File change_oracleadapter_indexes_to_run_quicker.diff, 1.4 kB (added by lisa, 2 years ago)

Patch to increase speed of OracleAdapter#indexes SQL

  • lib/active_record/connection_adapters/oracle_adapter.rb

    old new  
    299299        end 
    300300 
    301301        def indexes(table_name, name = nil) #:nodoc: 
    302           result = select_all(<<-SQL, name) 
     302          owner = @connection.describe(table_name).first 
     303           
     304          result = select_all(<<-SQL,name) 
    303305            SELECT lower(i.index_name) as index_name, i.uniqueness, lower(c.column_name) as column_name 
    304               FROM user_indexes i, user_ind_columns c 
    305              WHERE i.table_name = '#{table_name.to_s.upcase}' 
    306                AND c.index_name = i.index_name 
    307                AND i.index_name NOT IN (SELECT uc.index_name FROM user_constraints uc WHERE uc.constraint_type = 'P') 
    308               ORDER BY i.index_name, c.column_position 
     306             FROM all_indexes i, all_ind_columns c 
     307             WHERE 
     308            i.owner = '#{owner}' and c.INDEX_OWNER = '#{owner}' 
     309             and i.table_name = '#{table_name.to_s.upcase}' 
     310             AND c.index_name = i.index_name 
     311             AND i.index_name NOT IN (SELECT uc.index_name FROM user_constraints uc WHERE uc.constraint_type = 'P') 
     312             ORDER BY i.index_name, c.column_position 
    309313          SQL 
    310314 
    311315          current_index = nil