2014-09-26 2 views
-2
delete from cards_package_breakup 
where cards_package_id in 
    (select id from cards_package where cards_package.cards_id=13); 

У меня нет прямого отношения к таблице cards_package_breakup с любой таблицей, с которой я могу сопоставить значения, и я хочу удалить данные на основе внутреннего запроса. Я применил правильные индексы на столбцах, но не использовал эти индексы? основная проблема является индексом .. любой может помочьЯ хочу, чтобы оптимизировать этот запрос, используя подходящие индексы

+0

@shoaib. Я понимаю, что английский - это не ваш первый язык, но вопрос немного расплывчатый. Можете ли вы снова взглянуть на нее и сделать ее более кратким и рассказать нам, какова ваша проблема на самом деле? Ta – Rippo

+0

Я прошу, чтобы я применил индексы на требуемых столбцах, но он не использует никаких индексов. –

+0

Могу ли я использовать этот запрос в процедуре, поскольку использование «in» является дорогостоящим. Другое альтернативное решение для того же запроса? –

ответ

0

Вы написали, что у вас есть соответствующие индексы, которые позволяют связать ваши таблицы с Афоризм, так что вы можете попробовать модифицировать запрос в соответствии с ниже:

DELETE FROM cards_package_breakup AS cpb 
    LEFT JOIN cards_package AS cp ON cp.id = cpb.cardspackage_id 
    WHERE cpb.cards_id = 13; 

При необходимости исправьте имена полей в соответствии с вашей точной схемой, но приведенное выше свяжет ваши две таблицы и удалит из cards_package_breakup строки, соответствующие вашим критериям.

+0

Был ли обновленный запрос работать так, как вы хотели? – Gabor

+0

не полностью, но обновленный запрос дает мне ключ. Я переписываю свой запрос. Теперь он работает fine.thanks –

Смежные вопросы