--Views and indexes
--View is stored query or filter
--
use CommunityAssist
go
Create View vw_Employee
As
Select LastName [Last Name],
firstName [First Name],
HireDate [Hire Date],
SSNumber [Social Security No.],
Dependents
From Person p
inner Join Employee e
on p.PersonKey=e.PersonKey
go
Select * from vw_Employee
--you have to use the aliases as the field names
--when you query a view
--the view helps abstract the database
--users of the view don't know the underlying
--table structure or column names
Select [Last Name], [Social Security No.] From vw_Employee
Where Dependents is not null
go
--another view
--after you create a view if you want to change it
--you must alter it
--also the ORDER BY clause is forbidden in views
Alter View vw_DonationSummary
AS
Select MONTH(DonationDate) [Month],
Year(DonationDate) [Year], '$' +
cast(SUM(donationAmount) as varchar(7)) [Total]
From Donation
Group by Year(DonationDate), MONTH(donationDate)
Select * from vw_DonationSummary
Where [Year]=2010
--binary tree non clustered index
Create index ix_LastName on Person(LastName)
--a clustered is where table is physically order by the indexed field
create clustered index ix_lastnameClustered on Person(LastName)
--unique and filtered--filtered because of the where clause
--it only applies to the values that meet the condition
--also a index can be on more than one column in a table
--just separate them by commas in the parentheses
Create unique index ix_uniqueEmail on PersonContact(contactinfo)
Where ContactTypeKey = 6
Select * from PersonContact
--will generate an error because it is a duplicate
Insert into PersonContact(ContactInfo, PersonKey, ContactTypeKey)
Values('lmann@mannco.com', 2,6)
--drops an index
Drop index ix_uniqueEmail on PersonContact
--syntax for forcing an index
Select LastName, firstname from Person with (nolock,index(ix_LastName))
Monday, April 30, 2012
Views and Indexes
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment