Thursday, January 17, 2008

การทำ Index ของ Database

การทำ Index มีประโยชน์ในการค้นหาข้อมูล Query ได้รวดเร็ว โดยการค้นหาจะเป็นการกระโดดไปยังตำแหน่งที่ต้องการได้เลย ทำให้ไม่จำเป็นที่จะต้องค้นหาหมดทุก Row ทำให้ Query ได้เร็วกว่าเดิมมาก
1. ถ้าจะสร้างตาราง โดยจะใช้ field ที่เราใช้เป็นเงื่อนไขในการ query บ่อยๆ ก็สามารถสร้างตารางได้เลย เช่น
CREATE TABLE MyTransactionLogs
(
myKey INT AUTO_INCREMENT NOT NULL
myIndex TIMESTAMP NOT NULL
data1 VARCHAR(100)
data2 VARCHAR(100)
data3 VARCHAR(100)
etc VARCHAR(255)
PRIMARY KEY(myKey)
INDEX (myIndex)
)
;

2. ถ้าต้องการปรับปรุงตาราง ที่สร้างไปแล้ว เพื่อจัด index ให้ข้อมูลในฟิล์ด myIndex ถ้า myIndex ไม่ได้สั่งให้เป็น index ตั้งแต่ตอนสร้างตาราง ก็สามารถใช้คำสั่ง ข้างล่างนี้ จะทำให้ Query เร็วขึ้นมาก
ALTER TABLE MyTransactionLogs ADD INDEX(myIndex);
การจัดการ 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 น้อยที่สุด

Thursday, January 10, 2008

MIME Types

MIME (Multipurpose Internet Mail Extensions) is an Internet standard for describes message content types.

ที่มา:
http://www.w3schools.com/media/media_mimeref.asp

Windows Media Player CLASSID

Windows Media Player CLASSID

Windows Media Player มีหลายเวอร์ชั่น แต่ละเวอร์ชั่นก็จะมี Class ID และ Parameter ที่แตกต่างกัน

ดังนั้นจึงทำให้ต้องเปลี่ยน CLASSID ตามเวอร์ชั่นของ Windows Media Player ที่ต้องการให้รองรับ

Windows Media Player 10
clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6 (เหมือน WMP7)
Windows Media Player 9
clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6 (เหมือน WMP7)
Windows Media Player 7
clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6
Windows Media Player 6.4
clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95

Windows Media Player 6 (Older Version)
clsid:05589FA1-C356-11CE-BF01-00AA0055595A