necessary evils, building optimized crud procedures
DESCRIPTION
Every developer loves them and a lot of DBAs hate them. But there are many and valid reasons for creating generic SELECT, INSERT, UPDATE, and DELETE procedures. In this session, we’ll go through designing CRUD procedures that utilize new and existing SQL features to create CRUD procedures that are optimized for performance.TRANSCRIPT
Necessary Evils, Building Optimized CRUD Procedures
Jason Strate
b: www.jasonstrate.com
t: StrateSQL
Resources jasonstrate.com
Introduction
MAKING BUSINESS INTELLIGENT www.pragmaticworks.com
MAKING BUSINESS INTELLIGENT www.pragmaticworks.com
• Industry leaders in Microsoft BI and SQL Server Platform
• SQL Server Professionals - PASS Board of Directors, Speakers, Authors and MVP’s
• National Sales Team Divided by Microsoft Territories
• National System Integrator (NSI)• Gold Certified in Business Intelligence and Data
Platform• Platform Modernization/Safe Passage• Premier Partner for PDW SI Partner Program
MS PDW Partner of Year FY13Frontline Partnership Partner of the Year for Big DataExecutive sponsor - Andy Mouacdie, WW sales director PDW
• Over 7,200 customers worldwide• Over 186,000 people in PW database for demand
generation
About Pragmatic Works
Session Goals
1. Describe the uses for CRUD procedures in databases
2. Identify the common problems associated with CRUD procedures
3. Demonstrate methods for writing performantCRUD procedures
MAKING BUSINESS INTELLIGENT www.pragmaticworks.com
What is CRUD?
CREATE, READ, UPDATE, DELETE
• ABCD: add, browse, change, delete• BREAD: browse, read, edit, add, delete• QDIM: query, delete, insert, modify• SAID: show, alter, insert, delete• VEDAS: view, edit, delete, add, search• VADE(R): view, add, delete, edit
MAKING BUSINESS INTELLIGENT www.pragmaticworks.com
Code Generation
• Many tools available:
– T-SQL Script
– Code Smith
– Entity Framework
– LINQ to SQL
– NHibernate
MAKING BUSINESS INTELLIGENT www.pragmaticworks.com
CRUD Issues?
• Treat tables as objects– People?
– Relationships?
– Relationship Type?
• Overly generic– All columns touched
– One procedure to rule them all
• Performance– Set versus Singleton
– Index selection
MAKING BUSINESS INTELLIGENT www.pragmaticworks.com
Perspectives
MAKING BUSINESS INTELLIGENT www.pragmaticworks.com
CREATE, UPDATE, AND DELETE
Overview
MAKING BUSINESS INTELLIGENT www.pragmaticworks.com
CREATE
CREATE = INSERT
Issues:
• Singleton insert
• All columns affected
INSERT INTO dbo.Foo
(Column1, Column2)
VALUES(@Column1,
@Column2)
EXEC CRUD.FooInsert
@Column1 = 'Value‘,
@Column2 = 2
MAKING BUSINESS INTELLIGENT www.pragmaticworks.com
UPDATE = UPDATE
Issues:
Singleton update
All columns affected
UPDATE
UPDATE dbo.Foo
SET Column1 = @Column1
WHERE Column2 =
@Column2
EXEC CRUD.FooUpdate
@Column1 = 'Value‘,
@Column2 = 2
MAKING BUSINESS INTELLIGENT www.pragmaticworks.com
DELETE
DELETE = DELETE
Issues:
• Singleton delete
DELETE FROM dbo.Foo
WHERE Column2 = Column2
EXEC CRUD.FooDelete
@Column2 = 2
MAKING BUSINESS INTELLIGENT www.pragmaticworks.com
T-SQL Features
• Performance
– Table Valued Functions (TVF)
– Table Valued Parameters (TVP)
– XML document
– Merge statement
MAKING BUSINESS INTELLIGENT www.pragmaticworks.com
CREATE, UPDATE, AND DELETE
Demos
MAKING BUSINESS INTELLIGENT www.pragmaticworks.com
READ
Overview
MAKING BUSINESS INTELLIGENT www.pragmaticworks.com
READ
• READ = SELECT
Issues
• Index selectivity
SELECT Column1
,Column2
FROM dbo.Foo
WHERE (@Column1 IS NULL
OR Column1 = @Column1)
AND (@Column2 IS NULL
OR Column2 = @Column2)
EXEC CRUD.FooSelect
@Column1 = NULL
,@Column2 = 2
MAKING BUSINESS INTELLIGENT www.pragmaticworks.com
READ
Demo
MAKING BUSINESS INTELLIGENT www.pragmaticworks.com
Summary
1. CRUD isn’t necessarily bad
2. Generic templates offer ability to tune and extend data model behind the scenes.
3. Be cautious in choosing a template for CRUD
4. Know what SQL Server is doing
5. Leverage RECOMPILE as needed
MAKING BUSINESS INTELLIGENT www.pragmaticworks.com
Learn More About Performance
MAKING BUSINESS INTELLIGENT www.pragmaticworks.com
ServicesSpeed development through training, and rapid development services from Pragmatic Works.
ProductsBI products to covert to a Microsoft BI platform and simplify development onthe platform.
FoundationHelping those who do not have themeans to get into information technologyachieve their dreams.
For more information…
Name: Jason Strate
Email: [email protected]
Blog: www.jasonstrate.com