Tags
Advanced SQL Interview Questions and Answers, Advanced SQL tutorial pdf, any recommended websites for sql puzzles, Best SQL Puzzles, Buy SQL Server Interview Questions Book Online at Low Price, COmples tSQL puzzles, Complex SQL Challenges, complex sql statement(puzzle), Complex tsql, Complex TSQL Challenge, convert string to proper case in sql server, Disable and re-enable all indexes in a SQL Server database, Disable Indexes and Constraints, Disabling Indexes, Disabling vs. Dropping Indexes, Divide rows into two columns, Download SQL Questions, Download SQL Server Interview Question in PDF, Download SQL SERVER Interview questions, Download SQL Server Interview questions and answers, download sql server interview questions and answers pdf, download sql server interview questions by Pawan Khowal, download sql server interview questions by Pawan Kumar, download sql server interview questions by Pawan Kumar Khowal, Download T-SQL Interview Questions, Enable Indexes and Constraints | Microsoft Docs, Enable or Disable a Table Index in SQL Server, Free Download SQL SERVER Interview questions, Get Next Value Puzzle, How to Disable an Index in SQL Server, How to Enable and Disable SQL Server Indexes, Huge blank areas in database field, Improve SQL Skills, Interview Puzzles in SQL Server, Interview Qs.SQL SERVER Questions, Interview questions and Answers for MS SQL Server designing, Interview Questions and Answers For SQL, Interview questions on Joins, Interview Questions on SQL, Interview SQL Puzzles, InterviewQuestions, InterviewQuestions for SQL, Learn complex SQL, Learn SQL, Learn T-SQL, Microsoft SQL Server interview questions for DBA, MS SQL Server interview questions, MSBI Interview Questions, Objective Puzzle, Pawan, Pawan Khowal, Pawan Kumar, Pawan Kumar Khowal, PL/SQL Challenges, Puzzle SQL, puzzle sql developer, Puzzle SQl Server, Puzzles, PUzzles in SQL SERVER, Queries for SQL Interview, Remove Huge Multiple Spaces from a DB Fields, Remove Multiple Spaces from a DB Fields, Separate Int and char from a string column, Single Quote update SQL, SQL, SQL - The Pattern Puzzles, SQL 2012, SQL 2014, SQL 2014 Interview Questions, SQL Challenge, SQL Challenges, SQL Extreme Difficult Puzzle, SQL FAQ, SQL FAQs, sql group by only rows which are in sequence, SQL Interview Q & A, SQL Interview Questions, SQL Interview Questions - Part 2, SQL Interview Questions for SQL Professionals, SQL Joins, SQL Pattern Puzzles, SQL pl/sql puzzles, SQL prime number puzzle, SQL puzzle, SQL Puzzles, sql puzzles & answers, sql puzzles and answers free download, sql puzzles and answers pdf, sql puzzles for interview, sql puzzles oracle, SQL Queries, SQL Queries asked in interviews, SQL QUERY PUZZLES, SQL Query to Find Nth Highest Salary of Employee, SQL Questions, SQL Quiz, SQL Replace Puzzle, SQL Server - Common Interview Questions and Answers, SQL SERVER - Disable Index - Enable Index, SQL SERVER - Find Nth Highest Salary of Employee, SQL Server - General Interview Questions and Answers, sql server 2008 interview questions, SQL Server 2008 Interview Questions and Answers, SQL Server Database, SQL Server database developer interview questions and answers, sql server dba interview questions, SQL Server developer Interview questions and answers, SQL Server developer Interview questions with answers, SQL Server Developer T-SQL Interview Questions, sql server disable index, SQL server filter index with LIKE and RIGHT function?, SQL Server Interview Puzzle, SQL SERVER Interview questions, SQL SERVER Interview questions & Answers, SQL Server Interview Questions - Part 1, SQL Server Interview questions and answers, SQL Server Interview Questions and Answers - Free PDF, SQL SERVER Interview questions and answers for experienced, sql server interview questions and answers for net developers, SQL Server Interview Questions And Answers.pdf, sql server interview questions by Pawan Khowal sql interview questions, SQL SERVER Interview questions pdf, SQL Server Interview Questions | MSBISKILLS.Com, SQL Server Interview Questions | MSBISKILLS.com Top 50 SQL Server Questions & Answers, SQL Server Interview Questions/Answers Part-1, SQL Server Puzzle, SQL SERVER Puzzles, SQL server Questions and Answers, SQL SERVER Tips, SQL Skills, SQL Sudoku, SQL Tips & Tricks, SQL Tips and Tricks, SQL Top clause, SQL Tough Puzzle, SQL Tricks, SQL Trikcy question, sql/database interview for puzzle sql developer, SQLBI Interview Questions, SQLSERVER, SUM of grouped COUNT in SQL Query, T SQL Puzzles, T-SQL Challenge, T-SQL Interview Questions | SQL Server Interviews and Jobs, T-SQL Puzzle, T-SQL Server Interview Questions, T-SQL Tricky Puzzles, The Status Puzzle, Top 10 Frequently Asked SQL Query Interview Questions, TOP 100 SQL SERVER INTERVIEW QUESTIONS QUERIES, Top 50 SQL Server Interview Question for Testers, Tough SQL Challenges, Tough SQL Puzzles, Tricky Questions, TSQL, TSQL Challenge, TSQL Challenges, TSQL Interview questions, TSQL Puzzle, TSQL Puzzles, TSQL Queries
SQL PUZZLE | SQL SERVER – Disabling INDEXES : Clustered Index – A Good Idea ? | SQL Interview Question
In this post we shall understand how we can disable or enable indexes for a table in SQL Server
Let’s create table called UnderstandIndexes and insert some data for our examples
-- --Let's create table called UnderstandIndexes CREATE TABLE UnderstandIndexes ( Id INT ,Nm VARCHAR(10) ) GO INSERT INTO UnderstandIndexes VALUES ( 1, 'Pawan' ) , ( 2, 'Avtaar' ) GO CREATE UNIQUE CLUSTERED INDEX Ix_Id ON UnderstandIndexes(Id) GO --Commands completed successfully. CREATE UNIQUE NONCLUSTERED INDEX Ix_Name ON UnderstandIndexes(Nm) GO --Commands completed successfully. -- |
Now Lets see how many indexes are their on this table and their status
-- SELECT s.name tableName , x.object_id , x.name , x.type_desc , is_disabled FROM Sys.indexes x INNER JOIN sys.objects s ON x.object_id = s.object_id WHERE s.type = 'U' and s.name = 'UnderstandIndexes' -- |
OUTPUT
-- tableName object_id name type_desc is_disabled -------------------- ----------- ----------- -------------------- ----------- UnderstandIndexes 128719511 Ix_Id CLUSTERED 0 UnderstandIndexes 128719511 Ix_Name NONCLUSTERED 0 (2 rows affected) -- |
Now lets write a query where Name = ‘Avtaar’
-- SELECT Id,Nm FROM UnderstandIndexes WHERE Nm = 'Avtaar' -- |
The above query is using NONCLUSTERED INDEX Ix_Name. Now Lets disable the NONCLUSTERED INDEX Ix_Name and see how SQL Server get the data.
-- ALTER INDEX Ix_Name ON UnderstandIndexes DISABLE GO --Commands completed successfully. |
Now lets check how many indexes are there and their status on the table.
-- SELECT s.name tableName , x.object_id , x.name , x.type_desc , is_disabled FROM Sys.indexes x INNER JOIN sys.objects s ON x.object_id = s.object_id WHERE s.type = 'U' and s.name = 'UnderstandIndexes' OUTPUT tableName object_id name type_desc is_disabled ------------------------- ----------- ---------- ----------------- ----------- UnderstandIndexes 128719511 Ix_Id CLUSTERED 0 UnderstandIndexes 128719511 Ix_Name NONCLUSTERED 1 (2 rows affected) -- |
See the is_disabled column for NONCLUSTERED = Ix_Name is 1. This means this Index is disabled. Now lets run the query again
and see how SQL Server is getting the data.
-- SELECT Id,Nm FROM UnderstandIndexes WHERE Nm = 'Avtaar' -- |
Now the SQL Server is using Clustered Index Scan as it is the only Index available on the table. Lets enable the
NONCLUSTERED = Ix_Name again.
-- ALTER INDEX Ix_Name ON UnderstandIndexes REBUILD GO -- |
Now lets see the Indexes with the their enable/disable status.
-- SELECT s.name tableName , x.object_id , x.name , x.type_desc , is_disabled FROM Sys.indexes x INNER JOIN sys.objects s ON x.object_id = s.object_id WHERE s.type = 'U' and s.name = 'UnderstandIndexes' OUTPUT tableName object_id name type_desc is_disabled ------------------------ ----------- ------------ --------------- ----------- UnderstandIndexes 128719511 Ix_Id CLUSTERED 0 UnderstandIndexes 128719511 Ix_Name NONCLUSTERED 0 (2 rows affected) -- |
Now lets disable the CLUSTERED INDEX..
-- ALTER INDEX Ix_Id ON UnderstandIndexes DISABLE GO OUTPUT Warning: Index 'Ix_Name' on table 'UnderstandIndexes' was disabled as a result of disabling the clustered index on the table. -- |
Now lets see the Indexes with the their enable/disable status.
-- SELECT s.name tableName , x.object_id , x.name , x.type_desc , is_disabled FROM Sys.indexes x INNER JOIN sys.objects s ON x.object_id = s.object_id WHERE s.type = 'U' and s.name = 'UnderstandIndexes' OUTPUT tableName object_id name type_desc is_disabled ---------------------- ----------- --------- --------------- ----------- UnderstandIndexes 128719511 Ix_Id CLUSTERED 1 UnderstandIndexes 128719511 Ix_Name NONCLUSTERED 1 (2 rows affected) -- |
See once we disable the CLUSTERED Index SQL SERVER also disables the nonclustered indexes. ( is_disabled = 1 for both the rows )
Now lets see how SQL Server now will get the data for us.
-- SELECT * FROM UnderstandIndexes GO OUTPUT Msg 8655, Level 16, State 1, Line 116 The query processor is unable to produce a plan because the index 'Ix_Id' on table or view 'UnderstandIndexes' is disabled. -- |
SQL Server here says that it cannnot generate the execution plan as the clustered index is disabled.
Note – Once you disable the clustered index our table will of no USE.
Final Notes-
1. If we disable the Clustered Index, then data will exists, but will not be accessible for anything other than
Drop or REBUILD operations. The data rows of the disabled clustered index cannot be accessed except to drop or rebuild the clustered index.
2. All related Non-clustered Indexes and views will be unavailable as well as Foreign Keys referencing the table will be disabled
and there by leading the FAILURE for all the queries that are referencing the table.
3. There is no option to ENABLE the Index. You have to REBUILD it.
4. If we disable the Clustered Index, SQL Server will also disable the NonClustered Indexes with out any rows.
Note this is because disabled non-clustered indexes just keep the metadata, which along with the clustered index data is
adequate to REBUILD the index. See in the last column i.e row_count we have NULL in the below output.
-- SELECT s.name TableName , x.object_id , x.name , x.type_desc , is_disabled , p.row_count FROM Sys.indexes x INNER JOIN sys.objects s ON x.object_id = s.object_id LEFT JOIN sys.dm_db_partition_stats p ON p.object_id = x.object_id AND p.index_id = x.index_id WHERE s.type = 'U' and s.name = 'UnderstandIndexes' TableName object_id name type_desc is_disabled row_count ------------------------ ----------- ------------- ----------------- ----------- -------------------- UnderstandIndexes 128719511 Ix_Id CLUSTERED 1 2 UnderstandIndexes 128719511 Ix_Name NONCLUSTERED 1 NULL (2 rows affected) -- |
References
Pawan Khowal
Pawan is a SQL Server Developer. If you need any help in writing code/puzzle or training please email at – pawankkmr”AT”gmail.com. Meanwhile please go throgh the top pages from his blog.
Page Detail | URL |
---|---|
☛ SQL Advance Puzzles | https://msbiskills.com/tsql-puzzles-asked-in-interview-over-the-years/ |
☛ SQL Tricky Queries | https://msbiskills.com/sql-puzzles-finding-outputs/ |
☛ SQL Server Perfomance tuning Articles | https://msbiskills.com/sql-performance-tuning/ |
☛ SQL Server Articles | https://msbiskills.com/t-sql/ |
☛ SQL Interview Questions & Answers | https://msbiskills.com/sql-server-interview-questions/ |
My SQL Groups on Facebook:
1. If you like this post, you may want to join my SQL SERVER Interview Puzzles/Interview Questions on Facebook: https://www.facebook.com/groups/1430882120556342/
2. If you like this post, you may want to join my SQL Server Puzzles on Facebook:
https://www.facebook.com/groups/206594023090781/
My SQL Page on Facebook:
2. For all the updates you may follow my page -> https://www.facebook.com/MSBISkillscom-1602779883299222/
Enjoy !!! Keep Learning
Http://MsbiSkills.com