Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

conversions:

We are having mainly two conversions In SQL Server

1.Implicit conversions
2.explicit conversions

1.Implicit conversions
Implicit conversions occur whenever data with two different data types are being
compared.
Implicit conversions are very bad in terms of performance

2.Explicit conversions
SELECT BusinessEntityID, NationalIDNumber, LoginID, HireDate,JobTitle
FROM HumanResources.Employee
WHERE NationalIDNumber = 14417811
GO
SELECT BusinessEntityID, NationalIDNumber, LoginID, HireDate,JobTitle
FROM HumanResources.Employee
WHERE NationalIDNumber = CONVERT(NVARCHAR(15),14417811)

DBCC FREESESSIONCACHE
DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS
===============================

SELECT
databases.name AS database_name,
COUNT(*) * 8 / 1024 AS mb_used
FROM sys.dm_os_buffer_descriptors
INNER JOIN sys.databases
ON databases.database_id = dm_os_buffer_descriptors.database_id
GROUP BY databases.name
ORDER BY COUNT(*) DESC;
go
SELECT
COUNT(*) AS buffer_cache_pages,
COUNT(*) * 8 / 1024 AS buffer_cache_used_MB
FROM sys.dm_os_buffer_descriptors;

=================================

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

DECLARE @dbname SYSNAME


SET @dbname = QUOTENAME(DB_NAME());

WITH XMLNAMESPACES
(DEFAULT 'http://schemas.microsoft.com/sqlserver/2004/07/showplan')
SELECT
stmt.value('(@StatementText)[1]', 'varchar(max)'),
t.value('(ScalarOperator/Identifier/ColumnReference/@Schema)[1]',
'varchar(128)'),
t.value('(ScalarOperator/Identifier/ColumnReference/@Table)[1]',
'varchar(128)'),
t.value('(ScalarOperator/Identifier/ColumnReference/@Column)[1]',
'varchar(128)'),
ic.DATA_TYPE AS ConvertFrom,
ic.CHARACTER_MAXIMUM_LENGTH AS ConvertFromLength,
t.value('(@DataType)[1]', 'varchar(128)') AS ConvertTo,
t.value('(@Length)[1]', 'int') AS ConvertToLength,
query_plan
FROM sys.dm_exec_cached_plans AS cp
CROSS APPLY sys.dm_exec_query_plan(plan_handle) AS qp
CROSS APPLY
query_plan.nodes('/ShowPlanXML/BatchSequence/Batch/Statements/StmtSimple') AS
batch(stmt)
CROSS APPLY stmt.nodes('.//Convert[@Implicit="1"]') AS n(t)
JOIN INFORMATION_SCHEMA.COLUMNS AS ic
ON QUOTENAME(ic.TABLE_SCHEMA) =
t.value('(ScalarOperator/Identifier/ColumnReference/@Schema)[1]', 'varchar(128)')
AND QUOTENAME(ic.TABLE_NAME) =
t.value('(ScalarOperator/Identifier/ColumnReference/@Table)[1]', 'varchar(128)')
AND ic.COLUMN_NAME =
t.value('(ScalarOperator/Identifier/ColumnReference/@Column)[1]', 'varchar(128)')
WHERE
t.exist('ScalarOperator/Identifier/ColumnReference[@Database=sql:variable("@dbname"
)][@Schema!="[sys]"]') = 1

==============================

SELECT DB_NAME(qp.dbid) AS 'Database'


,qs.creation_time
,qs.last_execution_time
,st.text
,qp.query_plan
FROM sys.dm_exec_query_stats qs
OUTER APPLY sys.dm_exec_sql_text(sql_handle) st
CROSS APPLY sys.dm_exec_query_plan(plan_handle) AS qp
WHERE CAST(query_plan AS VARCHAR(MAX)) LIKE ('%CONVERT_IMPLICIT%')
GO

===================

CREATE EVENT SESSION [implicit] ON SERVER


ADD EVENT sqlserver.plan_affecting_convert(
ACTION(sqlserver.database_name,sqlserver.sql_text)
WHERE ([sqlserver].[database_name]=N'adventureworks2019'))
ADD TARGET package0.event_file(SET filename=N'C:\Test\implicit.xel')
WITH (STARTUP_STATE=ON)
GO

====================
DBCC FREESESSIONCACHE
DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS

=========================

create table tb1(


col1 varchar(50)
)
--Create index on col1
create index idx1 on tb1(col1 asc)

--Compare varchar column with nvarchar parameter (implicit conversion)


declare @v2 nvarchar(50)
select * from tb1 where col1 = @v2

--Compare varchar column with varchar parameter (no implicit conversion)


declare @v1 varchar(50)
select * from tb1 where col1 = @v1

You might also like