Why won't SQL Server use an index seek when running a parameterized query?Setting up ASP.NET Membership provider for an applicationWhat can cause long query durations without high resource usage?SQL Server crashes when remote query failsSQL Server: Index utilization statistics?LEFT JOIN Server Performance optimizationSQL Server 2005 running at 97% CPU usageSQL Server won't start due to LUNs being unavailableSQL Server 2005 using 100% CPU, but drops to 70% when SQL Server Profiler is RunningWhy is Postgres sitting 95% idle, with no file I/O?Randomly slow MySQL queries

Riley's, assemble!

Why don't B747s start takeoffs with full throttle?

How can Iron Man's suit withstand this?

How were concentration and extermination camp guards recruited?

Word for a small burst of laughter that can't be held back

Is it OK to bring delicacies from hometown as tokens of gratitude for an out-of-town interview?

What does it mean by "d-ism of Leibniz" and "dotage of Newton" in simple English?

What happens to foam insulation board after you pour concrete slab?

Is it legal in the UK for politicians to lie to the public for political gain?

Convert camelCase and PascalCase to Title Case

You've spoiled/damaged the card

Building a road to escape Earth's gravity by making a pyramid on Antartica

Can you please explain this joke: "I'm going bananas is what I tell my bananas before I leave the house"?

Avoiding cliches when writing gods

Pros and cons of writing a book review?

Can a magnetic field of an object be stronger than its gravity?

Bent spoke design wheels — feasible?

How to connect an offset point symbol to its original position in QGIS?

Why is the relationship between frequency and pitch exponential?

I wrote a scene that the majority of my readers loved. How do I get back to that place while writing my new book?

How certain is a caster of when their spell will end?

The ring of global sections of a regular scheme

The term for the person/group a political party aligns themselves with to appear concerned about the general public

Shrink exponential fraction argument



Why won't SQL Server use an index seek when running a parameterized query?


Setting up ASP.NET Membership provider for an applicationWhat can cause long query durations without high resource usage?SQL Server crashes when remote query failsSQL Server: Index utilization statistics?LEFT JOIN Server Performance optimizationSQL Server 2005 running at 97% CPU usageSQL Server won't start due to LUNs being unavailableSQL Server 2005 using 100% CPU, but drops to 70% when SQL Server Profiler is RunningWhy is Postgres sitting 95% idle, with no file I/O?Randomly slow MySQL queries






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








3















When I execute the following query in SQL Server 2005 it uses an index seek, as verified by viewing the execution plan.



SELECT *
FROM Account
WHERE Number = '123456789'


But when I run the same query, but use a parameter, it uses an index scan.



DECLARE @AccountNumber NVarChar(25)
SET @AccountNumber = '123456789'

SELECT *
FROM Account
WHERE Number = @AccountNumber


Since this table has over 10 million rows, the second query takes over 30 seconds while the first query takes only a few milliseconds. Do I really have to go and change all of my queries to not use parameters?










share|improve this question
























  • Should this belong on stackoverflow?

    – gbn
    Jul 22 '09 at 18:20

















3















When I execute the following query in SQL Server 2005 it uses an index seek, as verified by viewing the execution plan.



SELECT *
FROM Account
WHERE Number = '123456789'


But when I run the same query, but use a parameter, it uses an index scan.



DECLARE @AccountNumber NVarChar(25)
SET @AccountNumber = '123456789'

SELECT *
FROM Account
WHERE Number = @AccountNumber


Since this table has over 10 million rows, the second query takes over 30 seconds while the first query takes only a few milliseconds. Do I really have to go and change all of my queries to not use parameters?










share|improve this question
























  • Should this belong on stackoverflow?

    – gbn
    Jul 22 '09 at 18:20













3












3








3








When I execute the following query in SQL Server 2005 it uses an index seek, as verified by viewing the execution plan.



SELECT *
FROM Account
WHERE Number = '123456789'


But when I run the same query, but use a parameter, it uses an index scan.



DECLARE @AccountNumber NVarChar(25)
SET @AccountNumber = '123456789'

SELECT *
FROM Account
WHERE Number = @AccountNumber


Since this table has over 10 million rows, the second query takes over 30 seconds while the first query takes only a few milliseconds. Do I really have to go and change all of my queries to not use parameters?










share|improve this question
















When I execute the following query in SQL Server 2005 it uses an index seek, as verified by viewing the execution plan.



SELECT *
FROM Account
WHERE Number = '123456789'


But when I run the same query, but use a parameter, it uses an index scan.



DECLARE @AccountNumber NVarChar(25)
SET @AccountNumber = '123456789'

SELECT *
FROM Account
WHERE Number = @AccountNumber


Since this table has over 10 million rows, the second query takes over 30 seconds while the first query takes only a few milliseconds. Do I really have to go and change all of my queries to not use parameters?







performance sql-server-2005






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited May 18 at 22:30









window.document

1436




1436










asked Jul 22 '09 at 18:10









Stefan MoserStefan Moser

1407




1407












  • Should this belong on stackoverflow?

    – gbn
    Jul 22 '09 at 18:20

















  • Should this belong on stackoverflow?

    – gbn
    Jul 22 '09 at 18:20
















Should this belong on stackoverflow?

– gbn
Jul 22 '09 at 18:20





Should this belong on stackoverflow?

– gbn
Jul 22 '09 at 18:20










1 Answer
1






active

oldest

votes


















6














There are differences between using constants and variables because, simply, SQL Server tries to optimise for the general case.



However, in this instance, my first thought is that data type precedence causing implicit conversion. What data type is the Number column?



Example: say it's varchar(25). nvarchar has higher precedence then varchar so the column is implicitly converted before comparison.



I've been bitten recently by comparing varchar vs SUSER_SNAME. And I should know better.






share|improve this answer























  • You're right, Number is VarChar(25) and when I change the variable to be a VarChar(25) it uses an index seek. Thanks!

    – Stefan Moser
    Jul 22 '09 at 18:27











Your Answer








StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "2"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fserverfault.com%2fquestions%2f44181%2fwhy-wont-sql-server-use-an-index-seek-when-running-a-parameterized-query%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









6














There are differences between using constants and variables because, simply, SQL Server tries to optimise for the general case.



However, in this instance, my first thought is that data type precedence causing implicit conversion. What data type is the Number column?



Example: say it's varchar(25). nvarchar has higher precedence then varchar so the column is implicitly converted before comparison.



I've been bitten recently by comparing varchar vs SUSER_SNAME. And I should know better.






share|improve this answer























  • You're right, Number is VarChar(25) and when I change the variable to be a VarChar(25) it uses an index seek. Thanks!

    – Stefan Moser
    Jul 22 '09 at 18:27















6














There are differences between using constants and variables because, simply, SQL Server tries to optimise for the general case.



However, in this instance, my first thought is that data type precedence causing implicit conversion. What data type is the Number column?



Example: say it's varchar(25). nvarchar has higher precedence then varchar so the column is implicitly converted before comparison.



I've been bitten recently by comparing varchar vs SUSER_SNAME. And I should know better.






share|improve this answer























  • You're right, Number is VarChar(25) and when I change the variable to be a VarChar(25) it uses an index seek. Thanks!

    – Stefan Moser
    Jul 22 '09 at 18:27













6












6








6







There are differences between using constants and variables because, simply, SQL Server tries to optimise for the general case.



However, in this instance, my first thought is that data type precedence causing implicit conversion. What data type is the Number column?



Example: say it's varchar(25). nvarchar has higher precedence then varchar so the column is implicitly converted before comparison.



I've been bitten recently by comparing varchar vs SUSER_SNAME. And I should know better.






share|improve this answer













There are differences between using constants and variables because, simply, SQL Server tries to optimise for the general case.



However, in this instance, my first thought is that data type precedence causing implicit conversion. What data type is the Number column?



Example: say it's varchar(25). nvarchar has higher precedence then varchar so the column is implicitly converted before comparison.



I've been bitten recently by comparing varchar vs SUSER_SNAME. And I should know better.







share|improve this answer












share|improve this answer



share|improve this answer










answered Jul 22 '09 at 18:16









gbngbn

5,74111421




5,74111421












  • You're right, Number is VarChar(25) and when I change the variable to be a VarChar(25) it uses an index seek. Thanks!

    – Stefan Moser
    Jul 22 '09 at 18:27

















  • You're right, Number is VarChar(25) and when I change the variable to be a VarChar(25) it uses an index seek. Thanks!

    – Stefan Moser
    Jul 22 '09 at 18:27
















You're right, Number is VarChar(25) and when I change the variable to be a VarChar(25) it uses an index seek. Thanks!

– Stefan Moser
Jul 22 '09 at 18:27





You're right, Number is VarChar(25) and when I change the variable to be a VarChar(25) it uses an index seek. Thanks!

– Stefan Moser
Jul 22 '09 at 18:27

















draft saved

draft discarded
















































Thanks for contributing an answer to Server Fault!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fserverfault.com%2fquestions%2f44181%2fwhy-wont-sql-server-use-an-index-seek-when-running-a-parameterized-query%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Wikipedia:Vital articles Мазмуну Biography - Өмүр баян Philosophy and psychology - Философия жана психология Religion - Дин Social sciences - Коомдук илимдер Language and literature - Тил жана адабият Science - Илим Technology - Технология Arts and recreation - Искусство жана эс алуу History and geography - Тарых жана география Навигация менюсу

Bruxelas-Capital Índice Historia | Composición | Situación lingüística | Clima | Cidades irmandadas | Notas | Véxase tamén | Menú de navegacióneO uso das linguas en Bruxelas e a situación do neerlandés"Rexión de Bruxelas Capital"o orixinalSitio da rexiónPáxina de Bruselas no sitio da Oficina de Promoción Turística de Valonia e BruxelasMapa Interactivo da Rexión de Bruxelas-CapitaleeWorldCat332144929079854441105155190212ID28008674080552-90000 0001 0666 3698n94104302ID540940339365017018237

What should I write in an apology letter, since I have decided not to join a company after accepting an offer letterShould I keep looking after accepting a job offer?What should I do when I've been verbally told I would get an offer letter, but still haven't gotten one after 4 weeks?Do I accept an offer from a company that I am not likely to join?New job hasn't confirmed starting date and I want to give current employer as much notice as possibleHow should I address my manager in my resignation letter?HR delayed background verification, now jobless as resignedNo email communication after accepting a formal written offer. How should I phrase the call?What should I do if after receiving a verbal offer letter I am informed that my written job offer is put on hold due to some internal issues?Should I inform the current employer that I am about to resign within 1-2 weeks since I have signed the offer letter and waiting for visa?What company will do, if I send their offer letter to another company