আমি কি এই প্রাক যোগদানের পূর্ববর্তী সাবধানবাণী দ্বারা সতর্ক হওয়া উচিত?


20

আমি খারাপভাবে সম্পাদন করা স্টোরেজ পদ্ধতির বিট এবং টুকরোগুলি সমস্যার সমাধান করছি। প্রক্রিয়াটির এই বিভাগটি কোনও পূর্বের পূর্বের সতর্কতা নিক্ষেপ করছে

select
    method = 
        case methoddescription 
            when 'blah' then 'Ethylene Oxide'
            when NULL then 'N/A'
            else methoddescription
        end,
    testmethod = 
        case methoddescription 
            when 'blah' then 'Biological Indicators'
            when NULL then 'N/A'
            else 'Dosimeter Reports'
        end,
    result = 
        case when l.res is null or l.res <> 1 then 'Failed'
        else 'Passed'
        end,
    datecomplete = COALESCE(CONVERT(varchar(10), NULL, 101),'N/A')
from db2.dbo.view ls
    join db1.dbo.table l
        on ls.id = l.id
    where item = '19003'
        and l.id = '732820'

দর্শন ( [ls]) পরিকল্পনার ডানদিকে একটি রিমোট সার্ভার (দূরবর্তী কোয়েরি% 41) কল করে।

এখানে পরিকল্পনার একটি চিত্র রয়েছে:

পরিকল্পনা

আমি কেবল এই ব্লগ পোস্টের কারণে এই প্রশ্নটি জিজ্ঞাসা করি এবং আমি নিশ্চিত করতে চাই যে এটি পরে আমাকে কামড়ানোর জন্য ফিরে আসবে না।

উত্তর:


24

কারণ আমরা তা জানি l.id = '732820'এবং ls.id = l.idতারপরে এসকিউএল সার্ভার এটি উদ্ভূতls.id = '732820'

অর্থাত

FROM   db2.dbo.VIEW ls
       JOIN db1.dbo.table l
         ON ls.id = l.id
WHERE  l.id = '732820' 

এটার মতই

  ( /*...*/ FROM   db2.dbo.VIEW ls WHERE id = '732820'  )
   CROSS JOIN 
  ( /*...*/  FROM   db1.dbo.table l WHERE id = '732820'  )

এই পুনর্লিখনটি পারফরম্যান্সের জন্য খারাপ নয়

এই ডেরাইভেশন একটি ভাল জিনিস। এটি এসকিউএল সার্ভারকে সারিগুলি ফিল্টার করার অনুমতি দেয় ... অন্যথায় এটি সম্ভব হওয়ার চেয়ে আগে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.