Съвременните RDBM, включително Oracle, оптимизират повечето съединения и подзаявки до един и същ план за изпълнение.
Затова ще продължа и ще напиша заявката ви по най-лесния за вас начин и ще се съсредоточа върху това да гарантирам, че сте оптимизирали напълно вашите индекси.
Ако предоставите окончателното си запитване и схемата на вашата база данни, може да сме в състояние да предложим подробни предложения, включително информация относно потенциални проблеми със заключването.
Редактиране
Ето някои общи съвети, които се отнасят за вашата заявка:
- За обединения се уверете, че имате индекс на колоните, към които се присъединявате. Не забравяйте да приложите индекс към обединените колони в двете таблици. Може да мислите, че имате нужда от индекс само в една посока, но трябва да индексирате и двете, тъй като понякога базата данни определя, че е по-добре да се присъедини в обратната посока.
- За клаузите WHERE се уверете, че имате индекси на колоните, споменати в WHERE.
- За вмъкване на много редове е най-добре, ако можете да ги вмъкнете всички в една заявка.
- За вмъкване в таблица с клъстерен индекс, най-добре е да вмъкнете с нарастващи стойности за клъстерния индекс, така че новите редове да се добавят към края на данните. Това избягва повторното изграждане на индекса и често избягва заключванията на съществуващите записи, което би забавило SELECT заявките срещу съществуващи редове. По принцип вмъкванията стават по-малко болезнени за другите потребители на системата.