MS SQL Server Concepts and Programming Question:
Download Job Interview Questions and Answers PDF
Does Index Speed Up SELECT Statements?
Answers:
Answer #1If you want to see the impact of indexes on SELECT statements, you can run the same SELECT statement on "ggl_links" and "ggl_links_indexed" tables. See the tutorial exercise below:
USE GlobalGuideLineDatabase;
GO
-- Run SELECT on the table without indexes
DECLARE @start_time DATETIME, @end_time DATETIME;
SET @start_time = GETDATE();
SELECT TOP 3 counts, url FROM ggl_links
WHERE url LIKE 'a%'
ORDER BY counts DESC;
SET @end_time = GETDATE();
PRINT 'Milliseconds used: '+CONVERT(VARCHAR(20),
DATEDIFF(MILLISECOND,@start_time,@end_time));
GO
<pre>counts url
----------- ------------------------------------------------
999417 a ihgu migox mlqvi gvs n nmabwdk iehu ezjjv n l
999008 agqbr gkjwfpjvp z c cq k inen j ppjsu x iuk uhp
998471 a yiu squqco eih
</pre>
Milliseconds used: 46
USE GlobalGuideLineDatabase;
GO
-- Run SELECT on the table without indexes
DECLARE @start_time DATETIME, @end_time DATETIME;
SET @start_time = GETDATE();
SELECT TOP 3 counts, url FROM ggl_links
WHERE url LIKE 'a%'
ORDER BY counts DESC;
SET @end_time = GETDATE();
PRINT 'Milliseconds used: '+CONVERT(VARCHAR(20),
DATEDIFF(MILLISECOND,@start_time,@end_time));
GO
<pre>counts url
----------- ------------------------------------------------
999417 a ihgu migox mlqvi gvs n nmabwdk iehu ezjjv n l
999008 agqbr gkjwfpjvp z c cq k inen j ppjsu x iuk uhp
998471 a yiu squqco eih
</pre>
Milliseconds used: 46
Answer #2-- Run SELECT on the table with indexes
DECLARE @start_time DATETIME, @end_time DATETIME;
SET @start_time = GETDATE();
SELECT TOP 3 counts, url FROM ggl_links_indexed
WHERE url LIKE 'a%'
ORDER BY counts DESC;
SET @end_time = GETDATE();
PRINT 'Milliseconds used: '+CONVERT(VARCHAR(20),
DATEDIFF(MILLISECOND,@start_time,@end_time));
GO
<pre>counts url
----------- ------------------------------------------------
999417 a ihgu migox mlqvi gvs n nmabwdk iehu ezjjv n l
999008 agqbr gkjwfpjvp z c cq k inen j ppjsu x iuk uhp
998471 a yiu squqco eih
</pre>
Milliseconds used: 0
The test result shows indexes on "url" and "counts" did improve the SELECT statement from 46 milliseconds to almost 0 millisecond.
DECLARE @start_time DATETIME, @end_time DATETIME;
SET @start_time = GETDATE();
SELECT TOP 3 counts, url FROM ggl_links_indexed
WHERE url LIKE 'a%'
ORDER BY counts DESC;
SET @end_time = GETDATE();
PRINT 'Milliseconds used: '+CONVERT(VARCHAR(20),
DATEDIFF(MILLISECOND,@start_time,@end_time));
GO
<pre>counts url
----------- ------------------------------------------------
999417 a ihgu migox mlqvi gvs n nmabwdk iehu ezjjv n l
999008 agqbr gkjwfpjvp z c cq k inen j ppjsu x iuk uhp
998471 a yiu squqco eih
</pre>
Milliseconds used: 0
The test result shows indexes on "url" and "counts" did improve the SELECT statement from 46 milliseconds to almost 0 millisecond.
Download MS SQL Server Interview Questions And Answers
PDF
Previous Question | Next Question |
Does Index Slows Down INSERT Statements? | What Happens If You Add a New Index to Large Table? |