У меня есть активные записи запросКак я могу ускорить этот запрос?
Catalog::Product.joins(:product_properties).where("catalog_product_properties.name != ''").uniq.count
он генерирует этот SQL
SELECT DISTINCT COUNT(DISTINCT "catalog_products"."id") FROM "catalog_products" INNER JOIN "catalog_product_properties" ON "catalog_product_properties"."catalog_product_id" = "catalog_products"."id" WHERE (catalog_product_properties.name != '')
, которые выполняют ~ 1,8 второго
Я пытаюсь переписать это, и у меня есть этот
Catalog::Product.connection.select_all("SELECT COUNT(*) FROM (SELECT DISTINCT catalog_products.id FROM catalog_products INNER JOIN catalog_product_properties ON catalog_product_properties.catalog_product_id = catalog_products.id WHERE (catalog_product_properties.name != '')) AS temp")
, которые выполняют около ~ 1 секунды, но он все еще слишком длинный. у нас около 200 тыс. записей, как я могу ускориться?
извините за мой плохой английский
Спасибо Гордон, это хорошо solution.But этот запрос выполнить один и тот же, как мой запрос выше :) 1 second.I считалось невозможным загаданное быстрый запрос – user5542173