Ticket #11519: schema_dump_performance_improvements.diff
| File schema_dump_performance_improvements.diff, 2.4 kB (added by raymonds, 6 months ago) |
|---|
-
oracle_adapter.rb
old new 299 299 select_one("select sys_context('userenv','db_name') db from dual")["db"] 300 300 end 301 301 302 # changed select from user_tables to all_tables - much faster in large data dictionaries 302 303 def tables(name = nil) #:nodoc: 303 select_all("select lower(table_name) from user_tables").inject([]) do | tabs, t |304 select_all("select lower(table_name) from all_tables where owner = sys_context('userenv','session_user')").inject([]) do | tabs, t | 304 305 tabs << t.to_a.first.last 305 306 end 306 307 end … … 411 412 def pk_and_sequence_for(table_name) 412 413 (owner, table_name) = @connection.describe(table_name) 413 414 415 # changed select from all_constraints to user_constraints - much faster in large data dictionaries 414 416 pks = select_values(<<-SQL, 'Primary Key') 415 417 select cc.column_name 416 from all_constraints c, all_cons_columns cc418 from user_constraints c, all_cons_columns cc 417 419 where c.owner = '#{owner}' 418 420 and c.table_name = '#{table_name}' 419 421 and c.constraint_type = 'P' … … 430 432 structure << "create sequence #{seq.to_a.first.last};\n\n" 431 433 end 432 434 433 select_all("select table_name from user_tables").inject(s) do |structure, table| 435 # changed select from user_tables to all_tables - much faster in large data dictionaries 436 select_all("select table_name from all_tables where owner = sys_context('userenv','session_user')").inject(s) do |structure, table| 434 437 ddl = "create table #{table.to_a.first.last} (\n " 435 438 cols = select_all(%Q{ 436 439 select column_name, data_type, data_length, data_precision, data_scale, data_default, nullable … … 461 464 drop << "drop sequence #{seq.to_a.first.last};\n\n" 462 465 end 463 466 464 select_all("select table_name from user_tables").inject(s) do |drop, table| 467 # changed select from user_tables to all_tables - much faster in large data dictionaries 468 select_all("select table_name from all_tables where owner = sys_context('userenv','session_user')").inject(s) do |drop, table| 465 469 drop << "drop table #{table.to_a.first.last} cascade constraints;\n\n" 466 470 end 467 471 end