SQLITE Сложный оператор выбора. Помоги мне ускорить - PullRequest
1 голос
/ 15 февраля 2012

Некоторые могут или не могут считать это сложным утверждением, но для меня (так как я делал заявление в течение месяца), это так. Приведенный ниже оператор возвращает мне точные результаты, которые я ищу, но моя проблема в том, что для запуска на iMac требуется более 95 секунд. Мне нужно это заявление для запуска на iPhone. Кто-нибудь может найти лучший (более быстрый) способ сделать это?

select categories.category  
from categories join categories_listings 
where categories_listings.category_id = categories.id
  and categories.association_id = 1 
  and (select count(*) 
       from (select (
                    select categories.category 
                    from categories left join categories_listings 
                    where categories_listings.category_id = categories.id
                      and categories.association_id = 1 
                      and listings.id = categories_listings.listing_id) as region 
             from listings left join chamber_specifics
               on chamber_specifics.listing_id=listings.id 
             where region = categories.category  
               and listings.association_id=1 
               and listings.status = 1 
               and downtown='Y')) >0 
group by categories.category;

Дайте мне знать, если потребуется дополнительная информация.

Спасибо!

1 Ответ

1 голос
/ 16 февраля 2012

Я выступил с заявлением, которое дает мне те же результаты, что и в моем вопросе, но намного быстрее, примерно за 0,062 секунды. Ниже мое заявление: (Спасибо Руду за указание!)

select (
        select categories.category 
        from categories left join categories_listings 
        where categories_listings.category_id = categories.id  
        and categories.association_id = 1 
        and listings.id = categories_listings.listing_id) as region 
  from listings left join chamber_specifics 
    on chamber_specifics.listing_id=listings.id 
  where  listings.association_id=1 
  and listings.status = 1   
  and downtown='Y' 
group by region
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...