Friday, February 28, 2014

Create index to SQL Server 2005

  • อ้างอิงบน SQL Server 2005 Express Edition ,Windows Server 2003 R2
การจัดการ index ของตารางที่มมีฐานข้อมูลอยู่แล้ว จะเป็นการนำข้อมูลทั้งหมดของฟิล์ดที่เราต้องการจัด index มาจัดเรียง ทำให้เราต้องเสียพื้นที่(disk space) ในการจัดเก็บข้อมูลเพิ่มขึ้น ดังนั้นจึงไม่ควรจัด index ให้กับทุกฟิล์ดในตาราง ซึ่ง Field ที่ควรจัดเก็บควรมีคุณสมบัติดังต่อไปนี้
  • Field ที่ใช้เป็นเงื่อนไขในการค้นหาข้อมูล (เวลา query อยู่หลัง WHERE ก็คือ Field ที่ควรทำ Index)
  • จัด index ให้กับฟิล์ดที่ใช้ในการจัดเรียง (GROUP BY, ORDER BY)
  • จัด index ให้กับ Foreign Keys ที่เราเอาไว้ JOIN
และขั้นตอนในการจัด index จะใช้เวลาพอสมควรขึ้นอยู่กับจำนวนของข้อมูลว่ามีมากน้อยเพียงใด แต่ถ้ามีข้อมูลเป็นหลัก ล้าน หรือมากกว่านั้นก็จะใช้เวลามากขึ้น
โดยขณะที่กำลังจัด index อยู่ ตารางจะถูก locked ไว้ เพื่อไม่ให้ใครมา insert/update/delete ได้ ถ้าตารางข้อมูลกำลังรันอยู่ที่ production และต้องมีการใช้งานอยู่ตลอดเวลา คุณอาจจะเลี่ยงไปทำตอนที่มี traffic การใช้งานน้อย เช่น ช่วงตี 3 - ตี 4 ซึ่งเป็นช่วงนี้ traffic น้อยที่สุด

SQL CREATE INDEX Syntax
Creates an index on a table. Duplicate values are allowed:
CREATE INDEX index_name
ON table_name (column_name)

SQL CREATE UNIQUE INDEX Syntax

Creates a unique index on a table. Duplicate values are not allowed:
CREATE UNIQUE INDEX index_name
ON table_name (column_name)
Note: The syntax for creating indexes varies amongst different databases. Therefore: Check the syntax for creating indexes in your database.

CREATE INDEX Example

The SQL statement below creates an index named "PIndex" on the "LastName" column in the "Persons" table:
CREATE INDEX PIndex
ON Persons (LastName)
If you want to create an index on a combination of columns, you can list the column names within the parentheses, separated by commas:
CREATE INDEX PIndex
ON Persons (LastName, FirstName)
-----------------------------------------------------------------------------------------

The DROP INDEX Statement

The DROP INDEX statement is used to delete an index in a table.

DROP INDEX Syntax for MS Access:

DROP INDEX index_name ON table_name

DROP INDEX Syntax for MS SQL Server:

DROP INDEX table_name.index_name

DROP INDEX Syntax for DB2/Oracle:

DROP INDEX index_name

DROP INDEX Syntax for MySQL:

ALTER TABLE table_name DROP INDEX index_name


The DROP TABLE Statement

The DROP TABLE statement is used to delete a table.
DROP TABLE table_name


The DROP DATABASE Statement

The DROP DATABASE statement is used to delete a database.
DROP DATABASE database_name


The TRUNCATE TABLE Statement

What if we only want to delete the data inside the table, and not the table itself?
Then, use the TRUNCATE TABLE statement:
TRUNCATE TABLE table_name

อ้างอิง
  • http://www.w3schools.com/sql/sql_create_index.asp
  • http://www.w3schools.com/sql/sql_drop.asp
  • http://technet.microsoft.com/en-us/library/ms188783.aspx
  • http://www.thaiadmin.org/board/index.php?topic=89223.0
  • http://www.narisa.com/forums/index.php?showtopic=16173
  • http://dreamsender.blogspot.com/2008/01/index-database.html
  • http://www.thaicreate.com/tutorial/sql-create-index.html
  • http://www.narisa.com/forums/index.php?showtopic=20139

No comments:

Post a Comment