LINQ to SQL vs LINQ to Entities (ADO.Net Entity Framework)

Leave a comment

LINQ to SQL only supports 1 to 1 mapping of database tables, views, sprocs and functions available in Microsoft SQL Server. It’s a great API to use for quick data access construction to relatively well designed SQL Server databases. LINQ2SQL was first released with C# 3.0 and .Net Framework 3.5.

LINQ to Entities (ADO.Net Entity Framework) is an ORM (Object Relational Mapper) API which allows for a broad definition of object domain models and their relationships to many different ADO.Net data providers. As such, you can mix and match a number of different database vendors, application servers or protocols to design an aggregated mash-up of objects which are constructed from a variety of tables, sources, services, etc. ADO.Net Framework was released with the .Net Framework 3.5 SP1.

sql server : เกี่ยวกับ function

Leave a comment

insert, update, delete ไม่ได้ return 1 scalar หรือ 1 table เท่านั้น

Scalar User-Defined Function – คืนค่า 1 ค่า
Inline Table-Value User-Defined Function – คืนตาราง(ตารางจริง)
Multistatement Table-Value User-Defined Function – คืนตาราง(ที่กำหนดภายในฟังก์ชั่น)

Ex.

…….

update soon….

ref: http://www.sqlteam.com/article/user-defined-functions

sql server : เกี่ยวกับ index

Leave a comment

เกี่ยวกับ index
///////////////////////////

– cluster index : A table can have only one clustered index on it
– cluster index : เกิดตอนสร้าง primary key
– cluster index : อ่านคอลัมที่เป็น primary key(หรือ cluster index) เป็นแบบ Binary tree จึงอ่านข้อมูลได้เร็ว
เร็วขึ้น

– non cluster index : มีการจัดเหมือนสารบัญของหนังสือ ข้อมูลเรียงตามชั้น
เร็วขึ้น

ถ้าไม่มีการสร้าง index จะอ่านข้อมูลที่ละรายการทำให้ช้า

หลักการพิจารณาเพื่อเลือกสร้าง Indexes
/////////////////////////////////
> column ที่มักถูกใช้ในการ JOIN ระหว่างตาราง
> column ที่มักถูกเรียงด้วย ORDER BY
> column ที่มักถูกจัดกลุ่มด้วย GROUP BY
> column ที่มักถูกใช้กับ Aggreate Function
> column ที่มักถูกเปรียบเทียบเงื่อนไขโดย WHERE
> column ที่มักถูกใช้เป็น FOREIGN KEY

หลักการพิจารณาเพื่อเลือกไม่สร้าง Indexes
//////////////////////////////////
> column ที่เป็นประเภท text, image และ bit
> column ที่มีค่าซ้ำกันบ่อยๆ เช่น เพศ ที่มีเพียง 2 ค่า
> column ที่มีขนาดของข้อมูลมากๆ เช่น char(100)
> column ที่ไม่เคยถูกใช้ใน query เลย
> table ที่มีแถวข้อมูลไม่มากนัก
> table ที่มีการเพิ่ม ลบ แก้ไข ข้อมูลบ่อยๆ

function store proc แตกต่างกันอย่างไร

Leave a comment

function – return 1 table หรือ return scalar valueได้ค่าเดียว และ insert, update, delete กับ table จริงไม่ได้
store procedure – return หลาย table และ insert, update, delete กับ table จริงได้

function vs store procedure

Leave a comment

  • Stored Procedure support deffered name resolution where as functions do not support deffered name resolution.
  • User Defined Function can be used in a select statement where as you cannot use a stored procedure in a select statement.
  • UDF’s cannot return Image, Text where as a StoredProcedure can return any datatype.
  •  In general User Defined Functions are used for computations where as Stored Procedures are used for performing business logic.
  • UDF should return a value where as Stored Procedure need not.
  •  User Defined Functions accept lesser number of input parameters than Stored Procedures. UDF can have upto 1023 input parameters where as a Stored Procedure can have upto 21000 input parameters.
  •  Temporary Tables can not be used in a UDF where as a StoredProcedure can use Temporary Tables.
  • UDF can not Execute Dynamic SQL where as a Stored Procedure can execute Dynamic SQL.
  •  User Defined Function does not support error handling where as Stored Procedure support error handling. RAISEERROR or @@ERROR are not allowed in UDFs.
  • You can not write PRINT Statement in UDF
  • You can not write EXEC(‘any sql statement’) inside UDF
  • The core difference is that function has no side effect which means that it cannot change anything outside the function body.
  • Funcation can take only input parameter Where as Stored prcedure can take input and ouput parameters.
  • Stored procedures are compiled objects where as UDF are not
  • Stored procedures have capability to return multiple data sets where as function can return only one data set either scalar or table. May be this can be one of the reasons that the SP cannot be called inside UDF…Pl comment.
  • Functions can be called from procedure whereas procedures cannot be called from function.

SQL SERVER TIP

Leave a comment

http://www.sql-server-performance.com/

store procedure call store procedure

Leave a comment

<script type=”text/javascript”><!–
google_ad_client = “pub-2910472071369479”;
//728×90, created 11/20/07
google_ad_slot = “7313632958”;
google_ad_width = 728;
google_ad_height = 90;
//–></script>
<script type=”text/javascript”
src=”http://pagead2.googlesyndication.com/pagead/show_ads.js“>
</script>

src=”http://pagead2.googlesyndication.com/pagead/show_ads.js&#8221; mce_src=”http://pagead2.googlesyndication.com/pagead/show_ads.js”&gt;

set nocount on
declare @sql nvarchar(2000)
declare @comp_code nvarchar(255), @pin nvarchar(255), @LoanType nvarchar(255), @datefrom nvarchar(255)
declare @temp_id int, @n int
declare @docNo nvarchar(20)

create table #temp
(
 _id int IDENTITY,
 Company nvarchar(255),
 PIN nvarchar(255),
 LoanType nvarchar(255),
 df nvarchar(255)
)

insert into #temp
select Company, PIN, LoanType, convert(varchar,convert(datetime, DateFrom, 103),112) as df
from sheet1 where LoanType in (’01’,’02’,’03’,’04’,’05’) and convert(datetime, DateTo, 103) >= getdate()
order by pin

set @n = 0

— loop —
declare cur cursor for
select _id from #temp
open cur
fetch next from cur into @temp_id   
 while @@fetch_status=0
 begin  
  set @n = @n + 1
  
  exec get_running_number @n, @docNo out
  
  select @comp_code=Company, @pin=PIN, @LoanType=LoanType, @datefrom=df from #temp where _id=@temp_id
  
  set @sql = ‘insert into welfare.WF2_TXN_CREMATION (Comp_Code,Pin,Doc_Date,Relat_Pers_Type, Doc_No) values ‘
  set @sql = @sql + ‘(”’ + @comp_code + ”’,”’+ @pin + ”’,”’ + @datefrom + ”’,”’
+ @LoanType + ”’,”’ + @docNo + ”’)’
  print (@sql)
  
  fetch next from cur into @temp_id  
 end
 
 print ‘– total record: ‘ + cast(@n as varchar)

close cur
deallocate cur

— drop table —
drop table #temp    

set nocount off

Older Entries