<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlserver.ro/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>T-SQL</title><link>http://sqlserver.ro/forums/15/ShowForum.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Re: optimizare SELECT (sql server 2000)</title><link>http://sqlserver.ro/forums/thread/2444.aspx</link><pubDate>Fri, 10 Aug 2007 10:47:45 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2444</guid><dc:creator>Alex</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2444.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2444</wfw:commentRss><description>&lt;P&gt;dureaza 1 secunda &lt;/P&gt;
&lt;P&gt;si intoarce ~15.000 de inregistrari &lt;/P&gt;
&lt;P&gt;multumesc mult &lt;/P&gt;
&lt;P&gt;alex. &lt;/P&gt;</description></item><item><title>Re: optimizare SELECT (sql server 2000)</title><link>http://sqlserver.ro/forums/thread/2439.aspx</link><pubDate>Fri, 10 Aug 2007 09:27:18 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2439</guid><dc:creator>rsocol</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2439.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2439</wfw:commentRss><description>&lt;p&gt;Dacă e imposibil ca afm să fie NULL, atunci UNION-ul din acest view e inutil (şi deranjant dpdv al performanţei), deci ar trebui scos, obţinând:&lt;/p&gt;&lt;p&gt;select ... from customer cus &lt;br&gt;left join custrespperson resp on cus.id = resp.perid&lt;br&gt;where isactive = 1&lt;/p&gt;&lt;p&gt;Şi chiar şi dacă ar fi fost posibil ca afm să fie NULL, cred că UNION-ul tot ar fi trebuit scos, pentru că e absurd.&lt;/p&gt;&lt;p&gt;Sunt curios cât durează interograrea de mai sus acum, după ce ai scos şi acest UNION din view.&lt;/p&gt;&lt;p&gt;Răzvan&lt;/p&gt;</description></item><item><title>Re: optimizare SELECT (sql server 2000)</title><link>http://sqlserver.ro/forums/thread/2437.aspx</link><pubDate>Fri, 10 Aug 2007 07:43:03 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2437</guid><dc:creator>Alex</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2437.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2437</wfw:commentRss><description>&lt;P&gt;afm sa fie null e cam imposibil ca e restrictionat din aplicatie....nu poate salva daca nu introduce acest afm (cod_fiscal)&lt;/P&gt;
&lt;P&gt;coloana acc_id este id-ul din tabela customer care e identity(1,1) si cheie primara&lt;/P&gt;
&lt;P&gt;multumesc.&lt;/P&gt;
&lt;P&gt;alex.&lt;/P&gt;</description></item><item><title>Re: optimizare SELECT (sql server 2000)</title><link>http://sqlserver.ro/forums/thread/2434.aspx</link><pubDate>Thu, 09 Aug 2007 13:45:31 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2434</guid><dc:creator>rsocol</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2434.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2434</wfw:commentRss><description>&lt;p&gt;Am rearanjat puţin query-ul mai sus (fără să rescriu nimic) şi este ceva de genul:&lt;/p&gt;&lt;p&gt;select ... from (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select * from (select * from customer where isactive = 1) y&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; union all&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select * from customer where afm is null and isactive = 1&lt;br&gt;) cus left join custrespperson resp on cus.id = resp.perid&lt;/p&gt;&lt;p&gt;Chiar vrei să apară de două ori clienţii care nu au cod fiscal ? Sau e imposibil să fie îndeplinită condiţia "afm is null" ? Dacă e posibil, atunci view-ul (în forma actuală) returnează duplicate (inclusiv pentru coloana acc_id, care am zis că poate fi considerată cheie primară) !&lt;br&gt;&lt;/p&gt;&lt;p&gt;Răzvan&lt;/p&gt;</description></item><item><title>Re: optimizare SELECT (sql server 2000)</title><link>http://sqlserver.ro/forums/thread/2432.aspx</link><pubDate>Thu, 09 Aug 2007 11:23:30 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2432</guid><dc:creator>Alex</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2432.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2432</wfw:commentRss><description>&lt;P&gt;e mai mult decat perfect.....dureaza 2 sec&lt;/P&gt;
&lt;P&gt;multumesc mult.&lt;/P&gt;
&lt;P&gt;alex.&lt;/P&gt;
&lt;P&gt;P.S. asta e celalalt view...asa ca idee&lt;/P&gt;
&lt;P&gt;create&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; view [dbo].[vw_CRMImportClienti]&lt;BR&gt;as&lt;BR&gt;select cus.id acc_id, isnull(cus.name,'-') acc_name, isnull(cus.afm,'-') acc_new_codfiscal,&lt;BR&gt;&amp;nbsp;cus.phone11 acc_telephone1, cus.phone12 acc_telephone2, cus.fax1 acc_fax, &lt;BR&gt;&amp;nbsp;cus.webpage acc_websiteurl, cus.email acc_emailaddress1,'Adresa de facturare' acc_address1_name, &lt;BR&gt;&amp;nbsp;cus.city1 acc_address1_city, cus.street1 acc_address1_line1, cus.district1 acc_new_judet_sector,&lt;BR&gt;&amp;nbsp;cus.zipcode1 acc_address1_postalcode, cus.phone22 acc_address1_telephone1,&lt;BR&gt;&amp;nbsp;1 acc_address1_addresstypecode, --1 = Bill to address&lt;BR&gt;&amp;nbsp;cus.remarks acc_description, cus.crdlimit acc_creditlimit,&lt;BR&gt;&amp;nbsp;'Adresa de livrare' adr_name, isnull(cus.street2,'-') adr_line1, cus.city2 adr_city,&lt;BR&gt;&amp;nbsp;cus.zipcode2 adr_postalcode, 2 adr_addresstypecode, --2=Ship to address&lt;BR&gt;&amp;nbsp;cus.phone21 adr_telephone1, cus.telex2 adr_telephone2, cus.telex1 adr_primarycontactname, &lt;BR&gt;&amp;nbsp;resp.name per_lastname, '-' per_firstname, resp.privatephone per_telephone1,&lt;BR&gt;&amp;nbsp;resp.mobile per_mobilephone, resp.email per_emailaddress1, resp.remarks per_jobtitle,&lt;BR&gt;&amp;nbsp;isnull(right(code,len(code)-3),'-') acc_new_codatlantis, cus.r_CRMGUID acc_GUID ,&lt;BR&gt;&amp;nbsp;cus.comid, cus.braid&lt;BR&gt;from&lt;/P&gt;
&lt;P&gt;(select * from&lt;/P&gt;
&lt;P&gt;(select cus.* from customer cus&lt;BR&gt;&lt;BR&gt;where cus.isactive = 1)y&lt;/P&gt;
&lt;P&gt;union all&lt;/P&gt;
&lt;P&gt;select * from customer where afm is null and isactive = 1) cus&lt;BR&gt;left join custrespperson resp on cus.id = resp.perid&lt;/P&gt;
&lt;P&gt;alex.&lt;BR&gt;&lt;/P&gt;</description></item><item><title>Re: optimizare SELECT (sql server 2000)</title><link>http://sqlserver.ro/forums/thread/2430.aspx</link><pubDate>Thu, 09 Aug 2007 10:25:52 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2430</guid><dc:creator>rsocol</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2430.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2430</wfw:commentRss><description>&lt;p&gt;OK, în cazul în care am putea considera că acc_id e cheie primară în vw_crmimportclienti, atunci putem rescrie următoarea porţiune:&lt;/p&gt;&lt;p&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select cst.*, NULLIF(x.cstid,cst.acc_id) IDSUP from vw_crmimportclienti cst&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; inner join #T x on cst.acc_new_codfiscal = x.cstafm and cst.acc_id &amp;gt;= x.cstid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where cst.comid = 3&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; union all&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select *, null IDSUP from vw_crmimportclienti cst&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where acc_id not in (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select acc_id from vw_crmimportclienti cst&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inner join #T x on cst.acc_new_codfiscal = x.cstafm and cst.acc_id &amp;gt;= x.cstid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where cst.comid = 3&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;br&gt;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;astfel:&lt;/p&gt;&lt;p&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select cst.*, NULLIF(x.cstid,cst.acc_id) IDSUP from vw_crmimportclienti cst&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; left join #T x on cst.acc_new_codfiscal = x.cstafm and cst.acc_id &amp;gt;= x.cstid and cst.comid = 3&lt;br&gt;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Cu această ocazie, am putea să scoatem tabela temporară (acum, că e folosită doar odată), şi obţinem:&lt;/p&gt;&lt;p&gt;&lt;b&gt;select x.*,y.code CodAgent from (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select cst.*, NULLIF(x.cstid,cst.acc_id) IDSUP from vw_crmimportclienti cst&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; left join (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; select acc_new_codfiscal as cstafm, min(acc_id) as cstid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; from vw_crmimportclienti&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; where acc_new_codfiscal in (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; select acc_new_codfiscal from vw_crmimportclienti&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; where acc_new_codfiscal like '%[0-9]%'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; group by acc_new_codfiscal&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; having count(acc_new_codfiscal) &amp;gt; 1)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; group by acc_new_codfiscal&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) x on cst.acc_new_codfiscal = x.cstafm and cst.acc_id &amp;gt;= x.cstid and cst.comid = 3&lt;br&gt;) x inner join (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select sal.Code code,ftr.cusid cusid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT ftr.cusid, min(ftr.id) ftrid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM dbo.FINTRADE ftr&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INNER JOIN dbo.ITEMTRANS itt ON ftr.ID=itt.FTRID&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE ftr.SOURCE=5 AND itt.BILLEDOUTPUT=1&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GROUP BY cusid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) z join fintrade ftr on ftr.id=z.ftrid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INNER JOIN Salesman sal on ftr.COLIDSALESMAN = sal.id&lt;br&gt;) y on x.acc_id=y.cusid&lt;br&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Apoi, am putea să înlocuim porţiunea:&lt;/p&gt;&lt;p&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select cst.*, NULLIF(x.cstid,cst.acc_id) IDSUP from vw_crmimportclienti cst&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; left join (&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; select acc_new_codfiscal as cstafm, min(acc_id) as cstid&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; from vw_crmimportclienti&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; where acc_new_codfiscal in (&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; select acc_new_codfiscal from vw_crmimportclienti&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; where acc_new_codfiscal like '%[0-9]%'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; group by acc_new_codfiscal&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; having count(acc_new_codfiscal) &amp;gt; 1)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; group by acc_new_codfiscal&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ) x on cst.acc_new_codfiscal = x.cstafm and cst.acc_id &amp;gt;= x.cstid and cst.comid = 3&lt;br&gt;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;cu:&lt;/p&gt;&lt;p&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select a.*, (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SELECT MIN(b.acc_id) FROM vw_crmimportclienti b&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;WHERE a.acc_new_codfiscal=b.acc_new_codfiscal&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;AND b.acc_new_codfiscal like '%[0-9]%'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;AND a.acc_id&amp;gt;b.acc_id AND a.comid=3&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;) as IDSUP &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from vw_crmimportclienti a&lt;br&gt;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Obţinând în final query-ul:&lt;/p&gt;&lt;p&gt;&lt;b&gt;select x.*,y.code CodAgent from (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select a.*, (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SELECT MIN(b.acc_id) FROM vw_crmimportclienti b&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;WHERE a.acc_new_codfiscal=b.acc_new_codfiscal&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;AND b.acc_new_codfiscal like '%[0-9]%'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;AND a.acc_id&amp;gt;b.acc_id AND a.comid=3&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;) as IDSUP &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from vw_crmimportclienti a&lt;br&gt;) x inner join (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select sal.Code code,ftr.cusid cusid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT ftr.cusid, min(ftr.id) ftrid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM dbo.FINTRADE ftr&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INNER JOIN dbo.ITEMTRANS itt ON ftr.ID=itt.FTRID&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE ftr.SOURCE=5 AND itt.BILLEDOUTPUT=1&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GROUP BY cusid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) z join fintrade ftr on ftr.id=z.ftrid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INNER JOIN Salesman sal on ftr.COLIDSALESMAN = sal.id&lt;br&gt;) y on x.acc_id=y.cusid&lt;br&gt;&lt;/b&gt;&amp;nbsp;&lt;br&gt;Dacă e nevoie de mai multe optimizări, cred că ar trebui să intrăm în view-ul vw_crmimportclienti şi să vedem ce e în plus pe acolo (sau ce indecşi noi am putea face pentru acest query).&lt;br&gt;&lt;/p&gt;&lt;p&gt;Răzvan&lt;/p&gt;</description></item><item><title>Re: optimizare SELECT (sql server 2000)</title><link>http://sqlserver.ro/forums/thread/2421.aspx</link><pubDate>Wed, 08 Aug 2007 10:36:10 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2421</guid><dc:creator>Alex</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2421.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2421</wfw:commentRss><description>&lt;P&gt;Razvan.....daca-ti zic ceva acum cred ca o sa-ti vina sa ma strangi de gat :)&lt;/P&gt;
&lt;P&gt;e in totalitate vina mea recunosc pt ca nu am zis de la inceput ca acest select va fi folosit intr-un view si &lt;/P&gt;
&lt;P&gt;"Views or functions are not allowed on temporary tables. Table names that begin with '#' denote temporary tables."&lt;/P&gt;
&lt;P&gt;mii de scuze :(&lt;/P&gt;
&lt;P&gt;alex.&lt;/P&gt;</description></item><item><title>Re: optimizare SELECT (sql server 2000)</title><link>http://sqlserver.ro/forums/thread/2420.aspx</link><pubDate>Wed, 08 Aug 2007 10:02:28 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2420</guid><dc:creator>Alex</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2420.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2420</wfw:commentRss><description>&lt;P&gt;da...dureaza mult mai putin :)&lt;/P&gt;
&lt;P&gt;prima varianta a scriptului dureaza 11 sec iar cea de a 2-a dureaza 7 sec (super bine chiar)&lt;/P&gt;
&lt;P&gt;multumesc mult.&lt;/P&gt;
&lt;P&gt;intredevar si acc_is e intotdeauna ne-null si o putem considera si "cheie primara" pe viewul respectiv.....nu sunt duplicate in acc_id&lt;/P&gt;
&lt;P&gt;alex.&lt;/P&gt;
&lt;P&gt;edit: am marit valoarea la &lt;/P&gt;
&lt;P&gt;cstafm varchar(250)&lt;/P&gt;
&lt;P&gt;ca-mi dadea eroare&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Re: optimizare SELECT (sql server 2000)</title><link>http://sqlserver.ro/forums/thread/2419.aspx</link><pubDate>Wed, 08 Aug 2007 09:37:33 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2419</guid><dc:creator>rsocol</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2419.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2419</wfw:commentRss><description>&lt;p&gt;În primul rând, în loc de "acc_new_codfiscal like '%1%' or acc_new_codfiscal like '%2%' or ..." putem să scriem "acc_new_codfiscal like '%[0-9]%'".&lt;/p&gt;&lt;p&gt;Apoi, observăm că se repetă (de 4 ori) următoarea porţiune:&lt;/p&gt;&lt;p&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; select min(acc_id) cstid, min(acc_new_codfiscal) cstafm from vw_crmimportclienti&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; where acc_new_codfiscal in (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; select acc_new_codfiscal from vw_crmimportclienti&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; where acc_new_codfiscal like '%[0-9]%'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; group by acc_new_codfiscal&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; having count(acc_new_codfiscal) &amp;gt; 1)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; group by acc_new_codfiscal&lt;/b&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Pentru a fi mai uşor de citit, am putea folosi un CTE în SQL 2005 sau un view în SQL 2000. Totuşi, în acest caz, cred că am obţine o performanţă ceva mai bună cu o tabelă temporară. Pe de altă parte, dacă avem "group by
acc_new_codfiscal" atunci "min(acc_new_codfiscal)" înseamnă pur şi
simplu "acc_new_codfiscal". Deci:&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;CREATE TABLE #T (&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;cstafm varchar(10) PRIMARY KEY,&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;cstid int&lt;br&gt;)&lt;br&gt;&lt;br&gt;INSERT INTO #T (cstafm, cstid)&lt;br&gt;select acc_new_codfiscal, min(acc_id) from vw_crmimportclienti&lt;br&gt;where acc_new_codfiscal in (&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;select acc_new_codfiscal from vw_crmimportclienti&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;where acc_new_codfiscal like '%[0-9]%'&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;group by acc_new_codfiscal&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;having count(acc_new_codfiscal) &amp;gt; 1)&lt;br&gt;group by acc_new_codfiscal&lt;br&gt;&lt;br&gt;&lt;br&gt;select x.*,y.code CodAgent from (&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;select cst.*, x.cstid IDSUP from vw_crmimportclienti cst&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;left join #T x on cst.acc_new_codfiscal = x.cstafm and cst.acc_id &amp;gt; x.cstid&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;where x.cstid is not null and cst.comid = 3&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;union all&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;select cst.*, null IDSUP from vw_crmimportclienti cst&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;left join #T x on cst.acc_new_codfiscal = x.cstafm and cst.acc_id = x.cstid&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;where x.cstid is not null and cst.comid = 3&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;union all&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;select *, null IDSUP from vw_crmimportclienti cst&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;where acc_id not in (&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;select acc_id from vw_crmimportclienti cst&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;left join #T x on cst.acc_new_codfiscal = x.cstafm and cst.acc_id &amp;gt; x.cstid&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;where x.cstid is not null and cst.comid = 3&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;union all&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;select acc_id from vw_crmimportclienti cst&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;left join #T x on cst.acc_new_codfiscal = x.cstafm and cst.acc_id = x.cstid&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;where x.cstid is not null and cst.comid = 3&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;)&lt;br&gt;) x inner join (&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;select sal.Code code,ftr.cusid cusid&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;from (&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SELECT ftr.cusid, min(ftr.id) ftrid&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;FROM dbo.FINTRADE ftr &lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;INNER JOIN dbo.ITEMTRANS itt ON ftr.ID=itt.FTRID&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;WHERE ftr.SOURCE=5 AND itt.BILLEDOUTPUT=1&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;GROUP BY cusid&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; ) z join fintrade ftr on ftr.id=z.ftrid&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; INNER JOIN Salesman sal on ftr.COLIDSALESMAN = sal.id&lt;br&gt;) y on x.acc_id=y.cusid&lt;br&gt;&lt;br&gt;DROP TABLE #T&lt;/b&gt;&lt;br&gt;&lt;br&gt;Te-aş ruga să încerci query-ul de mai sus, să îmi spui cum stăm cu performanţa până aici.&lt;/p&gt;&lt;p&gt;În continuare, am putea să mai simplificăm UNION-urile respective, astfel:&lt;/p&gt;&lt;p&gt;1. Dacă avem LEFT JOIN iar apoi condiţie cu "WHERE x.cstid IS NOT NULL" înseamnă că de fapt avem INNER JOIN.&lt;/p&gt;&lt;p&gt;2. Putem primele două componente ale UNION ALL-ului diferă doar prin condiţia "cst.acc_id &amp;gt; x.cstid", respectiv "cst.acc_id = x.cstid" şi prin coloana IDSUP (care în al doilea caz e NULL), deci putem să le rescriem astfel:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select cst.*, NULLIF(x.cstid,cst.acc_id) IDSUP from vw_crmimportclienti cst&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; inner join #T x on cst.acc_new_codfiscal = x.cstafm and cst.acc_id &amp;gt;= x.cstid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where cst.comid = 3&lt;br&gt;&lt;/p&gt;&lt;p&gt;3. În UNION ALL-ul din subquery-ul care urmează după "where acc_id not in (", diferenţa este similară cu cea de mai sus, numai că nu mai avem deloc coloana IDSUP, deci putem să o simplificăm într-un mod similar, obţinând în final:&lt;/p&gt;&lt;p&gt;&lt;b&gt;CREATE TABLE #T (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cstafm varchar(10) PRIMARY KEY,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cstid int&lt;br&gt;)&lt;br&gt;&lt;br&gt;INSERT INTO #T (cstafm, cstid)&lt;br&gt;select acc_new_codfiscal, min(acc_id) from vw_crmimportclienti&lt;br&gt;where acc_new_codfiscal in (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select acc_new_codfiscal from vw_crmimportclienti&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where acc_new_codfiscal like '%[0-9]%'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; group by acc_new_codfiscal&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; having count(acc_new_codfiscal) &amp;gt; 1)&lt;br&gt;group by acc_new_codfiscal&lt;br&gt;&lt;br&gt;&lt;br&gt;select x.*,y.code CodAgent from (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select cst.*, NULLIF(x.cstid,cst.acc_id) IDSUP from vw_crmimportclienti cst&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; inner join #T x on cst.acc_new_codfiscal = x.cstafm and cst.acc_id &amp;gt;= x.cstid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where cst.comid = 3&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; union all&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select *, null IDSUP from vw_crmimportclienti cst&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where acc_id not in (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; select acc_id from vw_crmimportclienti cst&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; inner join #T x on cst.acc_new_codfiscal = x.cstafm and cst.acc_id &amp;gt;= x.cstid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; where cst.comid = 3&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;br&gt;) x inner join (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select sal.Code code,ftr.cusid cusid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT ftr.cusid, min(ftr.id) ftrid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FROM dbo.FINTRADE ftr &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; INNER JOIN dbo.ITEMTRANS itt ON ftr.ID=itt.FTRID&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE ftr.SOURCE=5 AND itt.BILLEDOUTPUT=1&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; GROUP BY cusid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;) z join fintrade ftr on ftr.id=z.ftrid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;INNER JOIN Salesman sal on ftr.COLIDSALESMAN = sal.id&lt;br&gt;) y on x.acc_id=y.cusid&lt;br&gt;&lt;br&gt;DROP TABLE #T&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Te rog încearcă şi query-ul de mai sus şi spune-mi cum stăm cu performanţa.&lt;/p&gt;&lt;p&gt;Următorul pas ar fi unificarea celor două componente a UNION-ului care a mai rămas, dar aici nu mai sunt foarte sigur că obţinem aceleaşi rezultate (în mod normal, ar trebui să fie la fel, dar fac nişte presupuneri în privinţa datelor din vw_crmimportclienti, pe care nu pot să le exprim foarte clar). Aşa că înainte de a face acest pas, aş avea nevoie să ştiu dacă putem considera că acc_id e cheie primară în vw_crmimportclienti (îmi dau seama că e un view şi că nu are definite niciun fel de chei, dar vreau să ştiu dacă luând în considerare cheile unice pe tabelele de bază şi modul în care e scris view-ul vw_crmimportclienti, rezultă dpdv logic că acc_id e totdeauna ne-nul şi că nu pot apare două rânduri în acest view cu aceeaşi valoare pentru acc_id ?).&lt;/p&gt;&lt;p&gt;Răzvan&lt;br&gt;&lt;/p&gt;</description></item><item><title>Re: optimizare SELECT (sql server 2000)</title><link>http://sqlserver.ro/forums/thread/2416.aspx</link><pubDate>Wed, 08 Aug 2007 06:01:30 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2416</guid><dc:creator>Alex</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2416.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2416</wfw:commentRss><description>&lt;P&gt;intradevar e greu de citit mai ales la prima vedere......&lt;/P&gt;
&lt;P&gt;o sa incerc sa fac o diagrama cu structura tabelelor...poate asa o sa inteleg si eu mai bine ce e pe acolo :)....initial scriptul (care nu a fost facut de mine) era doar pana la ultimul join (pana la ultimul X).......el initial intorcea niste clienti si date personale ale acestora....iar eu am mai adaugat si acel ultim inner join (cu Y) pt ca s-a vrut si codul agentului de vanzare pt acei clienti (acel CODE)&lt;/P&gt;
&lt;P&gt;multumesc&lt;/P&gt;
&lt;P&gt;&amp;nbsp;alex.&lt;/P&gt;</description></item><item><title>Re: optimizare SELECT (sql server 2000)</title><link>http://sqlserver.ro/forums/thread/2415.aspx</link><pubDate>Wed, 08 Aug 2007 05:52:42 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2415</guid><dc:creator>Alex</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2415.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2415</wfw:commentRss><description>&lt;P&gt;am incercat Index Tuning dar mi-l imbunatateste cu 0%....imi zice el pe acolo sa sterg niste index-uri dar ca procent de imbunatatire imi arata 0&lt;/P&gt;
&lt;P&gt;alex.&lt;/P&gt;</description></item><item><title>Re: optimizare SELECT (sql server 2000)</title><link>http://sqlserver.ro/forums/thread/2413.aspx</link><pubDate>Tue, 07 Aug 2007 18:11:39 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2413</guid><dc:creator>B_gd_n[ ]Sahlean</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2413.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2413</wfw:commentRss><description>&lt;p&gt;Pentru inceput presupunand ca folosesti 2000 iti recomand&amp;nbsp;&lt;span class="a3"&gt;&lt;/span&gt;&lt;span class="a3"&gt;&lt;b&gt;Index Tuning Wizard&lt;/b&gt; din &lt;/span&gt;&lt;span class="a3"&gt;Enterprise Manager.&lt;/span&gt; &lt;/p&gt;</description></item><item><title>Re: optimizare SELECT (sql server 2000)</title><link>http://sqlserver.ro/forums/thread/2412.aspx</link><pubDate>Tue, 07 Aug 2007 13:17:01 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2412</guid><dc:creator>Diana</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2412.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2412</wfw:commentRss><description>E mai dificil de citit. Poti sa "pui" aici o diagrama cu structura
tabelelor si relatiile dintre ele? Ce campuri trebuie sa contina
rezultatul - de fapt ce trebuie sa "produca" acest script? &lt;br&gt;</description></item><item><title>optimizare SELECT (sql server 2000)</title><link>http://sqlserver.ro/forums/thread/2411.aspx</link><pubDate>Tue, 07 Aug 2007 13:04:48 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2411</guid><dc:creator>Alex</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2411.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2411</wfw:commentRss><description>&lt;P&gt;salut, vede cineva o varianta mai simpla la selectul asta (poate asta il si optimizeaza):&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;select x.*,y.code CodAgent from&lt;BR&gt;(&lt;BR&gt;select cst.*, x.cstid IDSUP from vw_crmimportclienti cst&lt;BR&gt;left join &lt;BR&gt;&amp;nbsp;&amp;nbsp;(select min(acc_id) cstid, min(acc_new_codfiscal) cstafm from vw_crmimportclienti &lt;BR&gt;where acc_new_codfiscal in (select acc_new_codfiscal from vw_crmimportclienti&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;where (acc_new_codfiscal like '%1%' or acc_new_codfiscal like '%2%' or acc_new_codfiscal like '%3%' &lt;BR&gt;&amp;nbsp;or acc_new_codfiscal like '%4%' or acc_new_codfiscal like '%5%' or acc_new_codfiscal like '%6%' &lt;BR&gt;&amp;nbsp;or acc_new_codfiscal like '%7%' or acc_new_codfiscal like '%8%' or acc_new_codfiscal like '%9%' or acc_new_codfiscal like '%0%')&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;group by acc_new_codfiscal &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;having count(acc_new_codfiscal) &amp;gt; 1)&lt;BR&gt;group by acc_new_codfiscal) x &lt;BR&gt;&amp;nbsp;&amp;nbsp;on cst.acc_new_codfiscal = x.cstafm and cst.acc_id &amp;gt; x.cstid&lt;BR&gt;where x.cstid is not null&lt;BR&gt;&amp;nbsp;and cst.comid = 3&lt;/P&gt;
&lt;P&gt;union all&lt;/P&gt;
&lt;P&gt;select cst.*, null IDSUP from vw_crmimportclienti cst&lt;BR&gt;left join &lt;BR&gt;&amp;nbsp;&amp;nbsp;(select min(acc_id) cstid, min(acc_new_codfiscal) cstafm from vw_crmimportclienti &lt;BR&gt;where acc_new_codfiscal in (select acc_new_codfiscal from vw_crmimportclienti&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;where (acc_new_codfiscal like '%1%' or acc_new_codfiscal like '%2%' or acc_new_codfiscal like '%3%' &lt;BR&gt;&amp;nbsp;or acc_new_codfiscal like '%4%' or acc_new_codfiscal like '%5%' or acc_new_codfiscal like '%6%' &lt;BR&gt;&amp;nbsp;or acc_new_codfiscal like '%7%' or acc_new_codfiscal like '%8%' or acc_new_codfiscal like '%9%' or acc_new_codfiscal like '%0%')&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;group by acc_new_codfiscal &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;having count(acc_new_codfiscal) &amp;gt; 1)&lt;BR&gt;group by acc_new_codfiscal) x &lt;BR&gt;&amp;nbsp;&amp;nbsp;on cst.acc_new_codfiscal = x.cstafm and cst.acc_id = x.cstid&lt;BR&gt;where x.cstid is not null&lt;BR&gt;&amp;nbsp;and cst.comid = 3&lt;/P&gt;
&lt;P&gt;union all&lt;/P&gt;
&lt;P&gt;select *, null IDSUP from vw_crmimportclienti cst&lt;BR&gt;where acc_id not in&lt;BR&gt;(select acc_id from vw_crmimportclienti cst&lt;BR&gt;left join &lt;BR&gt;&amp;nbsp;&amp;nbsp;(select min(acc_id) cstid, min(acc_new_codfiscal) cstafm from vw_crmimportclienti &lt;BR&gt;where acc_new_codfiscal in (select acc_new_codfiscal from vw_crmimportclienti&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;where ( acc_new_codfiscal like '%1%' or acc_new_codfiscal like '%2%' or acc_new_codfiscal like '%3%' &lt;BR&gt;&amp;nbsp;or acc_new_codfiscal like '%4%' or acc_new_codfiscal like '%5%' or acc_new_codfiscal like '%6%' &lt;BR&gt;&amp;nbsp;or acc_new_codfiscal like '%7%' or acc_new_codfiscal like '%8%' or acc_new_codfiscal like '%9%' or acc_new_codfiscal like '%0%')&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;group by acc_new_codfiscal &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;having count(acc_new_codfiscal) &amp;gt; 1)&lt;BR&gt;group by acc_new_codfiscal) x &lt;BR&gt;&amp;nbsp;&amp;nbsp;on cst.acc_new_codfiscal = x.cstafm and cst.acc_id &amp;gt; x.cstid&lt;BR&gt;where x.cstid is not null&lt;BR&gt;&amp;nbsp;and cst.comid = 3&lt;/P&gt;
&lt;P&gt;union all&lt;/P&gt;
&lt;P&gt;select acc_id from vw_crmimportclienti cst&lt;BR&gt;left join &lt;BR&gt;&amp;nbsp;&amp;nbsp;(select min(acc_id) cstid, min(acc_new_codfiscal) cstafm from vw_crmimportclienti &lt;BR&gt;where acc_new_codfiscal in (select acc_new_codfiscal from vw_crmimportclienti&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;where ( acc_new_codfiscal like '%1%' or acc_new_codfiscal like '%2%' or acc_new_codfiscal like '%3%' &lt;BR&gt;&amp;nbsp;or acc_new_codfiscal like '%4%' or acc_new_codfiscal like '%5%' or acc_new_codfiscal like '%6%' &lt;BR&gt;&amp;nbsp;or acc_new_codfiscal like '%7%' or acc_new_codfiscal like '%8%' or acc_new_codfiscal like '%9%' or acc_new_codfiscal like '%0%')&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;group by acc_new_codfiscal &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;having count(acc_new_codfiscal) &amp;gt; 1)&lt;BR&gt;group by acc_new_codfiscal) x &lt;BR&gt;&amp;nbsp;&amp;nbsp;on cst.acc_new_codfiscal = x.cstafm and cst.acc_id = x.cstid&lt;BR&gt;where x.cstid is not null&lt;BR&gt;&amp;nbsp;and cst.comid = 3)&lt;/P&gt;
&lt;P&gt;) x&lt;/P&gt;
&lt;P&gt;inner join &lt;/P&gt;
&lt;P&gt;(&lt;BR&gt;select sal.Code code,ftr.cusid cusid&lt;BR&gt;from&amp;nbsp;&amp;nbsp; (&lt;BR&gt;&amp;nbsp;&amp;nbsp;SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ftr.cusid,min(ftr.id) ftrid&lt;BR&gt;&amp;nbsp;&amp;nbsp;FROM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dbo.FINTRADE ftr INNER JOIN&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dbo.ITEMTRANS itt ON ftr.ID = itt.FTRID&lt;BR&gt;&amp;nbsp;&amp;nbsp;WHERE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (ftr.SOURCE = 5) AND (itt.BILLEDOUTPUT = 1)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; group by cusid&lt;BR&gt;&amp;nbsp;) y&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; join fintrade ftr on ftr.id=y.ftrid&lt;BR&gt;&amp;nbsp;&amp;nbsp;INNER JOIN Salesman sal &lt;BR&gt;&amp;nbsp;&amp;nbsp;on ftr.COLIDSALESMAN = sal.id&lt;/P&gt;
&lt;P&gt;&amp;nbsp;) y&lt;BR&gt;on x.acc_id=y.cusid&lt;/P&gt;
&lt;P&gt;intoarce ~20 de mii de inregistrari si dureaza ~20 sec&lt;/P&gt;
&lt;P&gt;multumesc &lt;/P&gt;
&lt;P&gt;alex.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item></channel></rss>