Why my sql query is so slow in one database?

Ke Vin

I am using sql server 2008 r2 and I have two database, which is one have 11.000 record and another is just 3000 record, when i do run this query

SELECT Right(rtrim(tbltransac.No_Faktur),6) as NoUrut,
       tbltransac.No_Faktur,
       tbltransac.No_FakturP,
       tbltransac.Kd_Plg,
       Tblcust.Nm_Plg,
       GRANDTOTAL AS Total_Faktur,
       tbltransac.Nm_Pajak,
       tbltransac.Tgl_Faktur,
       tbltransac.Tgl_FakturP,
       tbltransac.Total_Distribusi 
FROM Tblcust
  INNER JOIN ViewGrandtotal AS tbltransac ON Tblcust.Kd_Plg = tbltransac.Kd_Plg 
WHERE tbltransac.Kd_Trn = 'J'
  and year(tbltransac.tgl_faktur)=2015
  And ISNULL(tbltransac.No_OPJ,'') <> 'SHOP'  
Order by Right(rtrim(tbltransac.No_Faktur),6) Desc

It takes me 1 minute 30 sec in my server (I query it using sql management tool) that have 3000 record but it only took 3 sec to do a query in my another server which is have 11000 record, whats wring with my database?

I've already tried to backup and restore my 3000 record database and restore it in my 11000 record server, it's faster.. took 30 sec to do a query, but it's still annoying if i compare to my 11000 record server. They are in the same spec

How this happend? what i should check? i check on event viewer, resource monitor or sql management log, i couldn't find any error or blocked connection. There is no wrong routing too..

Please help... It just happen a week ago, before this it was fine, and I haven't touch the server more than a month...

Ionic

as already mentioned before, you have three issues in your query.

Just as an example, change the query to this one:

SELECT Right(rtrim(tbltransac.No_Faktur),6) as NoUrut,
       tbltransac.No_Faktur,
       tbltransac.No_FakturP,
       tbltransac.Kd_Plg,
       Tblcust.Nm_Plg,
       GRANDTOTAL AS Total_Faktur,
       tbltransac.Nm_Pajak,
       tbltransac.Tgl_Faktur,
       tbltransac.Tgl_FakturP,
       tbltransac.Total_Distribusi 
FROM Tblcust
  INNER JOIN ViewGrandtotal AS tbltransac ON Tblcust.Kd_Plg = tbltransac.Kd_Plg 
WHERE tbltransac.Kd_Trn = 'J'
  and tbltransac.tgl_faktur BETWEEN '20150101' AND '20151231'
  And tbltransac.No_OPJ <> 'SHOP'  
Order by NoUrut Desc --Only if you need a sorted output in the datalayer

Another idea, if your viewGrandTotal is quite large, could be an pre-filtering of this table before you join it. Sometimes SQL Server doesn't get a good plan which needs some lovely touch to get him in the right direction.

Maybe this one:

SELECT Right(rtrim(vgt.No_Faktur),6) as NoUrut,
        vgt.No_Faktur,
        vgt.No_FakturP,
        vgt.Kd_Plg,
        tc.Nm_Plg,
        vgt.Total_Faktur,
        vgt.Nm_Pajak,
        vgt.Tgl_Faktur,
        vgt.Tgl_FakturP,
        vgt.Total_Distribusi 
FROM (SELECT Kd_Plg, Nm_Plg FROM Tblcust GROUP BY Kd_Plg, Nm_Plg) as tc -- Pre-Filter on just the needed columns and distinctive.
INNER JOIN (
        -- Pre filter viewGrandTotal
        SELECT  DISTINCT vgt.No_Faktur, vgt.No_Faktur, vgt.No_FakturP, vgt.Kd_Plg, vgt.GRANDTOTAL AS Total_Faktur, vgt.Nm_Pajak, 
                vgt.Tgl_Faktur, vgt.Tgl_FakturP, vgt.Total_Distribusi 
        FROM ViewGrandtotal AS vgt 
        WHERE tbltransac.Kd_Trn = 'J'
        and tbltransac.tgl_faktur BETWEEN '20150101' AND '20151231'
        And tbltransac.No_OPJ <> 'SHOP'  
    ) as vgt
    ON tc.Kd_Plg = vgt.Kd_Plg 
Order by NoUrut Desc --Only if you need a sorted output in the datalayer

The pre filtering could increase the generation of a better plan.

もう1つの問題は、マルチスレッドだけである可能性があります。クエリは、11.000行のためにコストのしきい値に達すると、並列プランを取得する可能性があります。もう1つのクエリは、行が低いため、通常の計画にヒットします。SSMSクエリ内に実際の実行プランを含めることで、生成されたプランを確認できます。

たぶん、あなたは手がかりを得るためにそれらの計画を比較することができます。これで問題が解決しない場合は、ここに投稿して、フィードバックを受け取ることができます。

これがお役に立てば幸いです。テーブルの構造、テーブルのサイズ、パフォーマンスカウンターなどを知らずに、良いヒントを与えるのは簡単ではありません。:-)

よろしく、イオン

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Why are my prototypes so slow?

分類Dev

Why My Android Webview Is So Slow

分類Dev

Why my LAN connection is so slow?

分類Dev

Why Powershell is so slow?

分類Dev

Why doesn't my SQL query select any row from the sqllite database

分類Dev

Why is my SQL "INSERT INTO" query not working?

分類Dev

Why is my DSL connection so slow, when my neighbor's is much faster?

分類Dev

Why does a slight change in the search term slow down the query so much?

分類Dev

Database Query - One to Many

分類Dev

Why am I getting column not found in my SQL query?

分類Dev

SQL multi table query working slow

分類Dev

Why does Rotativa always generate my login page? Why is it slow?

分類Dev

Is it possible for a SQL query to crash a database

分類Dev

Why is the diag function so slow? [in R 3.2.0 or earlier]

分類Dev

Why is AWS S3 so slow? (Swift)

分類Dev

Why so slow returning data from Oracle external tables?

分類Dev

Why is `find -depth 1` so slow to list directories?

分類Dev

Why is this simple Z3 proof so slow?

分類Dev

Why is pandas.series.map so shockingly slow?

分類Dev

Why is passing data from MATLAB to mex so slow?

分類Dev

Why is C++ performance so slow in this simple code?

分類Dev

Why is combining Task.Run and plinq so slow?

分類Dev

Why is this dictionary comprehension so slow? Please suggest way to speed it up

分類Dev

Why is dd so slow with a bs of 100M

分類Dev

Why my simple T-Sql Function can not run in Query WIndow?

分類Dev

Swift : Why did my IOS application slow down

分類Dev

updating totals with one sql query

分類Dev

How to merge sql query with union into one query

分類Dev

Struggling to wrap my head around this Database Query

Related 関連記事

ホットタグ

アーカイブ