Oracle
 sql >> база данни >  >> RDS >> Oracle

Използването на select * за курсор в PL/SQL счита ли се за лошо програмиране?

Използвайки select * във вашия код е това, което бих нарекъл мързеливо програмиране, с няколко неприятни странични ефекта. До каква степен ще изпитате тези странични ефекти ще се различава, но никога не е положително.

Ще използвам някои от точките, вече споменати в други отговори, но не се колебайте да редактирате отговора си и да добавите още някои отрицателни точки относно използването на select * .

  1. Изпращате повече данни от SQL машината към вашия код, отколкото е необходимо, което има отрицателен ефект върху производителността.

  2. Информацията, която получавате обратно, трябва да бъде поставена в променливи (например променлива за запис). Това ще отнеме повече PGA памет от необходимото.

  3. Като използвате select * никога няма да използвате само индекс, за да извлечете желаната информация, винаги ще трябва да посетите и таблицата (при условие, че не съществува индекс, който да съдържа всички колони на таблицата). Отново с отрицателен ефект върху производителността.

  4. По-малко ясно за хората, поддържащи вашия код, какво е вашето намерение. Те трябва да се поровят в кода, за да забележат всички срещания на вашата променлива за запис, за да разберат какво се извлича.

  5. Няма да използвате SQL функции за извършване на изчисления, но винаги разчитайте на PL/SQL или Java изчисления. Вероятно пропускате някои страхотни подобрения на SQL като аналитични функции, моделна клауза, рекурсивно факторизиране на подзаявки и други подобни.

  6. От Oracle11 нататък зависимостите се проследяват на ниво колона, което означава, че когато използвате select * , вашият код е маркиран в речника на данните като „зависим от всички колони“ на тази таблица. Вашата процедура ще бъде анулирана, когато нещо се случи с една от тези колони. Така че използването на select * означава, че вашият код ще бъде невалиден по-често, отколкото е необходимо.

Отново можете да добавите свои собствени точки.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLException:нарушение на протокола. Проблем с драйвера на Oracle JDBC

  2. В PHP получаването на клас „PDO“ не е намерено грешка при опит за свързване с Oracle DB

  3. Алтернативи на Toad

  4. Как да разрешим ORA-00939:твърде много аргументи за функционална грешка?

  5. BadImageFormatException на доставчик на .net oracle