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

SQL Server:Заявка бързо, но бавно от процедура

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

Намерих друг отговор тук "Параметър Sniffing", Благодаря Omnibuzz. Свежда се до използването на "локални променливи" във вашите заявки за съхранени процедури, но прочетете оригинала за повече разбиране, това е страхотно писане. напр.

Бавен начин:

CREATE PROCEDURE GetOrderForCustomers(@CustID varchar(20))
AS
BEGIN
    SELECT * 
    FROM orders
    WHERE customerid = @CustID
END

Бърз начин:

CREATE PROCEDURE GetOrderForCustomersWithoutPS(@CustID varchar(20))
AS
BEGIN
    DECLARE @LocCustID varchar(20)
    SET @LocCustID = @CustID

    SELECT * 
    FROM orders
    WHERE customerid = @LocCustID
END

Надявам се това да помогне на някой друг, правейки това намали времето ми за изпълнение от 5+ минути на около 6-7 секунди.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да премахнете заглавките на колоните при изпращане по имейл на резултатите от заявката в SQL Server (T-SQL)

  2. Преобразувайте редовете в колони с помощта на „Pivot“ в SQL Server

  3. Как да изпълня съхранена процедура на MS SQL Server в java/jsp, връщайки данни от таблица?

  4. Разлика между sys.views, sys.system_views и sys.all_views в SQL Server

  5. Как да избягвате низове в SQL Server с помощта на PHP?