Странный вывод "SELECT 1"

Когда я использую мини-профилирующую стойку с моим приложением (работает ruby ​​1.9.3 p194, rails 3.2.8 и pg 0.14.0), я получаю очень странные результаты анализа. Обычно это будет выглядеть примерно так:

/da/brugte-biler/Fiat/Multipla autouncle.dev on Mon, 27 Aug 2012 13:30:50 GMT
                                             duration (ms) from start (ms) query time (ms)
GET http://autouncle.dev:80/da/brugte-biler/F...   19.2 +0.0   3 sql   0.5
  Executing action: search                         83.4 +16.0  48 sql  9.4
   Rendering: cars_search/table_listing            819.2  +99.0  356 sql   71.2
    Rendering: cars/_reliability_report            12.5 +601.0
    Rendering: cars_search/_sidebar                1093.7 +616.0   281 sql   356.7
    Rendering: cars/_listing_table                 1612.6 +1731.0  123 sql   549.5
    Rendering: kaminari/_paginator                 27.2 +3632.0
   Rendering: layouts/search_results               31.3 +3671.0
    Rendering: layouts/_shared_head_content        223.4  +3673.0
    Rendering: partials/_top_links                 2.6  +3907.0
    Rendering: partials/_search_form               165.1  +3912.0
    Rendering: partials/_footer_links              5.2  +4086.0
    Rendering: layouts/_shared_footer_content      8.7  +4099.0
share show trivial show time with children   24.0 % in sql

Странная вещь здесь, то есть говорит, что там называются 356 SQL-операторов. Но причины нет. Если я нажимаю на них, чтобы увидеть, как это называется, я вижу много таких утверждений:

8.70 ms 
Executing action: search — 7.70 ms
Executing action: search
T+23.7 ms
Reader
0.3 ms
app/models/car_search.rb:97:in `relation'
app/controllers/cars_search_controller.rb:102:in `pagination_relation'
app/controllers/cars_search_controller.rb:37:in `search'
app/controllers/controller_concerns/country_requesting.rb:66:in `select_database_shard'
lib/www_middleware.rb:11:in `call'
SELECT 1   
Executing action: search
T+25.8 ms
Reader
0.2 ms
app/models/car_search.rb:97:in `relation'
app/controllers/cars_search_controller.rb:102:in `pagination_relation'
app/controllers/cars_search_controller.rb:37:in `search'
app/controllers/controller_concerns/country_requesting.rb:66:in `select_database_shard'
lib/www_middleware.rb:11:in `call'
SELECT 1   
Executing action: search
T+26.8 ms
Reader
0.2 ms
app/models/car_search.rb:97:in `relation'
app/controllers/cars_search_controller.rb:102:in `pagination_relation'
app/controllers/cars_search_controller.rb:37:in `search'
app/controllers/controller_concerns/country_requesting.rb:66:in `select_database_shard'
lib/www_middleware.rb:11:in `call'
SELECT 1

И это продолжается и продолжается 356 раз.

Я очень озадачен, что с этим делать. Любой ключ к тому, что это может быть все о?

ОБНОВИТЬ:

Код в car_search.rb является довольно сложным методом, который создает соответствующий запрос. В основном то, что он делает, похоже на это:

def relation
  cars = Car.onsale # a scope that says .where(:sales_state => 'onsale')

  cars = cars.with_brand(brand) if brand.present? # a scope that says .where(:brand => 'some_brand')

  cars = cars.with_model_name(model_name) if model_name.present? # a scope that says .where(:model_name => 'some_model_name')

  return cars
end

0 ответов

Другие вопросы по тегам