Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
   
 

Registered : 96,316

 
HOME > PHP > PHP Forum > เทคนิคเพิ่มความเร็วในการ Query T-SQL ลำดับขอบเครื่องหมาย มีผลในการค้นหาเป็นอย่างมาก
 

เทคนิคเพิ่มความเร็วในการ Query T-SQL ลำดับขอบเครื่องหมาย มีผลในการค้นหาเป็นอย่างมาก

 



Topic : 029291



โพสกระทู้ ( 479 )
บทความ ( 0 )



สถานะออฟไลน์




ลำดับขอบเครื่องหมาย มีผลในการค้นหาเป็นอย่างมาก
จะเรียงจากสำคัญที่สุด ไปหาน้อยสุดนะครับ
- =
- >,>=,<,<=
- LIKE
- <>

สำคัญที่สุด จะเรียงจาก ซ้ายไปขวานะครับ

และจะมาเพิ่มทีละนิด



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2009-07-17 14:58:32 By : taobsd View : 5247 Reply : 25
 

 

No. 1



โพสกระทู้ ( 479 )
บทความ ( 0 )



สถานะออฟไลน์


ในกรณีที่เราต้องใช้ SUBSTRING ในการค้นหาอะไรซักอย่าง เช่น

where substring(firstname,1,1) = 'm'

เราควรที่จะเปลี่ยนเป็น

where firstname like 'm%'

เพราะว่า Substring เป็น Function ทำให้รันได้ช้ากว่า

อาจจะช่วยได้อย่างละนิด อย่างละหน่อยนะครับ






Date : 2009-07-17 15:05:53 By : taobsd
 


 

No. 2



โพสกระทู้ ( 479 )
บทความ ( 0 )



สถานะออฟไลน์


ข้อห้ามสำหรับการใส่เงื่อนไขที่ ไม่ได้ทำ Index ก็คือไม่ควรใส่ Function ที่ ฟิลด์นั้น
ยกตัวอย่าง
เราต้องการหาอายุที่มากกว่า 21 ปี

ส่วนมากจะเป็น
SELECT MEMBER_NUMBER,FIRST_NAME,LAST_NAME
FROM MEMBERS
WHERE DATEDIFF(YY,DATOFBIRTH,GETDATE()) > 21

ซึ่งจำทำให้ช้า เพราะ Datofbirth ไม่ได้ทำ Index ไว้
เราลองมาเปลี่ยนนิดหน่อยสิจะดีขึ้น

SELECT MEMBER_NUMBER,FIRST_NAME,LAST_NAME
FROM MEMBERS
WHERE DATEOFBIRTH < DATEADD(YY,-21,GETDATE())

ได้ผลเหมือนกัน ลองเอาไปปรับใช้ดูนะครับ
Date : 2009-07-20 08:01:54 By : taobsd
 

 

No. 3



โพสกระทู้ ( 479 )
บทความ ( 0 )



สถานะออฟไลน์


การใช้ IN กับ BETWEEN

ในกรณีที่เรารู้ข้อมูลแน่นอน และมีการเรียงของข้อมูล

เช่น
SELECT CUSTOMER_NUMBER,CUSTOMER_NAME
FROM CUSTOMER
WHERE CUSTOMER_NUMBER IN (1000,1001,1002)

กับ
SELECT CUSTOMER_NUMBER,CUSTOMER_NAME
FROM CUSTOMER
WHERE CUSTOMER_NUMBER BETWEEN 1000 AND 1002

แบบใช้ BETWEEN จะมีการ Query ได้เร็วกว่า
Date : 2009-07-20 13:19:19 By : taobsd
 


 

No. 4



โพสกระทู้ ( 3,319 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ขอบคุณมากครับ ++

ว่าแต่ T-SQL คืออะไรคับ
Date : 2009-07-21 19:15:01 By : pjgunner
 


 

No. 5



โพสกระทู้ ( 479 )
บทความ ( 0 )



สถานะออฟไลน์


T-SQL ก็คือ Transact-SQL ที่ใช้กับ MSSQL ซะส่วนใหญ่ครับ
แต่ก็เป็นพื้นฐาน ที่เอาไปเทียบใช้กับ ยี่ห้ออื่น ๆ ก็ได้ครับ
Date : 2009-07-22 07:40:16 By : taobsd
 


 

No. 6



โพสกระทู้ ( 479 )
บทความ ( 0 )



สถานะออฟไลน์


วันนี้เรามาดูเทคนิคเพิ่มเติมระหว่าง OR กับ UNION ALL กัน
ในกรณีที่เรา ใช้ OR ในส่วนของเงื่อนไข เยอะ ๆ จะทำให้ Query ช้าลงมาก ๆ เช่น

SELECT EMPLOYEEID,FIRSTNAME, LASTNAME
FROM EMPLOYEE
WHER DEPT = 'IT' OR CITY = 'UDONTHANI' OR DIVISION = 'SUPPORT'

เราสามารถใช้การ UNION ALL เพื่อเพิ่มความเร็วในการ Query ได้

SELECT EMPLOYEEID,FIRSTNAME, LASTNAME
FROM EMPLOYEE
WHER DEPT = 'IT'
UNION ALL
SELECT EMPLOYEEID,FIRSTNAME, LASTNAME
FROM EMPLOYEE
WHER CITY = 'UDONTHANI'
UNION ALL
SELECT EMPLOYEEID,FIRSTNAME, LASTNAME
FROM EMPLOYEE
WHER DIVISION = 'SUPPORT'

อย่างนี้ จะเพิ่มประสิทธิภาพในการ Query ได้นะครับ
หวังว่าคงช่วยได้ไม่มากก็น้อยนะครับ
Date : 2009-07-22 07:50:10 By : taobsd
 


 

No. 7

Guest


thank เอาอีกๆ
Date : 2009-07-22 10:16:11 By : naskw
 


 

No. 8



โพสกระทู้ ( 891 )
บทความ ( 2 )



สถานะออฟไลน์
Facebook

ขยันเขียนจริงครับ นับถือๆ
Date : 2009-07-22 12:19:46 By : teez1232002
 


 

No. 9



โพสกระทู้ ( 3,319 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

เก่ง SQL จริงๆ ผมเองก็ใช้ซินแท็คเป็นไม่กี่อัน เอง
Date : 2009-07-23 09:09:44 By : pjgunner
 


 

No. 10



โพสกระทู้ ( 479 )
บทความ ( 0 )



สถานะออฟไลน์


ไม่หรอกครับ
ผมคิดว่า อะไรที่ทำให้ได้ก็ช่วย ๆ กันครับ
ผมไม่ได้เก่งอะไรครับ
เขียนโปรแกรมไม่เก่งครับ

ได้ก็แต่ Query เท่านั้นละครับ
ที่ได้ลองเยอะเท่านั้นเองครับ
ก็เลยอยากเอามาแชร์ครับ เป็นความรู้ให้รุ่นน้องต่อไปครับ
Date : 2009-07-23 10:39:52 By : taobsd
 


 

No. 11



โพสกระทู้ ( 479 )
บทความ ( 0 )



สถานะออฟไลน์


วันนี้เรามาดูเกี่ยวกับ Group by กับ DISTINCT ว่าจะช่วยให้ Query เราเร็วขึ้นสักนิดได้หรือป่าว

ในกรณีที่ เราไม่มี เงื่อนไขในการ Query Group by เป็นทางเลือกที่ใช้ในการ Query ได้เร็วกว่า DISTINCT

แต่ถ้าเกิดว่าเรามีเงื่อนไขในการ Query แล้วละก็ เราควรเปลี่ยนมาใช้ DISTINCT จะดีกว่า
ลองมาดูตัวอย่างกันนะครับ

USE Northwind
SELECT ORDERID
FROM [ORDER DETAILS]
WHERE UNITPRICE > 10
GROUP BY ORDERID

กับ
USE Northwind
SELECT DISTINCT ORDERID
FROM [ORDER DETAILS]
WHERE UNITPRICE > 10

ลองไปทดลองกันได้นะครับ
แล้วพบกันใหม่
Date : 2009-07-23 10:48:52 By : taobsd
 


 

No. 12

Guest


ช่วงนี้ยุ่งจิง ๆ ครับ งานเยอะมาก ๆ เลย
วันนี้เรามาดูสิว่า นอกจากการ Count(*) แล้ว
ยังมีวิธีไหนที่จะ Count ได้เร็วขึ้นอีก

USE Northwind
SET STATISTICS IO ON
GO
SELECT count(*) FROM [order Details]
GO
SELECT rows FROM sysindexes WHERE id = OBJECT_ID('order Details') AND indid < 2
GO
SET STATISTICS IO OFF
GO


แล้วลองดูผลลัพธ์ดูนะครับ ยิ่งตัวเลขน้อย ยิ่งเร็ว
แล้วพบกันใหม่
Date : 2009-07-27 16:07:09 By : taobsd
 


 

No. 13



โพสกระทู้ ( 479 )
บทความ ( 0 )



สถานะออฟไลน์


ช่วงนี้ยุ่งจิง ๆ ครับ งานเยอะมาก ๆ เลย
วันนี้เรามาดูสิว่า นอกจากการ Count(*) แล้ว
ยังมีวิธีไหนที่จะ Count ได้เร็วขึ้นอีก

USE Northwind
SET STATISTICS IO ON
GO
SELECT count(*) FROM [order Details]
GO
SELECT rows FROM sysindexes WHERE id = OBJECT_ID('order Details') AND indid < 2
GO
SET STATISTICS IO OFF
GO


แล้วลองดูผลลัพธ์ดูนะครับ ยิ่งตัวเลขน้อย ยิ่งเร็ว
แล้วพบกันใหม่
Date : 2009-07-27 16:10:29 By : taobsd
 


 

No. 14



โพสกระทู้ ( 11,785 )
บทความ ( 10 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์
Twitter Facebook

+ ให้เลย มาเรื่อยๆ นะครับ
Date : 2009-07-27 22:19:18 By : plakrim
 


 

No. 15



โพสกระทู้ ( 479 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณครับ จะพยายาม
เอาประสบการณ์มาแชร์กันเรื่อย ๆ นะครับ

ขอบคุณสำหรับทุกคะแนนครับ
Date : 2009-07-28 08:33:17 By : taobsd
 


 

No. 16



โพสกระทู้ ( 479 )
บทความ ( 0 )



สถานะออฟไลน์


วันนี้เรามาดูว่า UNION กับ UNION ALL ต่างกันอย่างไร
แล้วแบบไหนเร็วกว่ากัน

UNION นั้น เป็นการ Join กันระหว่าง 2 Table ที่มี Columns เหมือนกันทั้งหมด
และจะมีการหาข้อมูลซ้ำ เอามาโชว์แค่ตัวเดียว

UNION ALL นั้น ก็เป็นการ Join เหมือนกับ UNION แต่จะไม่มีการหาข้อมูลซ้ำ
ซึ่งก็จะทำให้การ Join กันเร็วขึ้น ในกรณีที่เราไม่สนใจว่าข้อมูลเราจะซ้ำหรือป่าว
ผลลัพท์ที่ออกมาก็จะออกมาทั้งหมดจิง ๆ

ลองเอาไปประยุกต์ใช้ดูได้นะครับบบบบบ
Date : 2009-07-28 10:05:21 By : taobsd
 


 

No. 17



โพสกระทู้ ( 3,319 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

อยากให้ เป็น MySQL อ่ะคับ ถึงจะเข้าใจ พอดี ไม่ถูกกะ M$ เท่าไหร่
ไม่ก็ standard sql ก็ได้คับ สอนซินแท็คด้วยก็ดี
Date : 2009-07-28 21:53:32 By : pjgunner
 


 

No. 18



โพสกระทู้ ( 479 )
บทความ ( 0 )



สถานะออฟไลน์


พอดีผมไม่ค่อยเก่ง MYSQL ครับ
แต่บางตัวก็เป็น Basic ของ SQL อะครับ
นำไปประยุกต์ใช้น่าจะได้

ต้องขอโทษทีนะครับ
Date : 2009-07-29 08:07:42 By : taobsd
 


 

No. 19



โพสกระทู้ ( 3,319 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ไม่เป็นไรไม่ต้องขอโทษครับ
Date : 2009-07-29 09:53:57 By : pjgunner
 


 

No. 20



โพสกระทู้ ( 236 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


พ่อพระมาโปรด พวกเราแล๊ว! เย๊ๆๆ
Date : 2009-07-29 10:50:34 By : paphun
 


 

No. 21



โพสกระทู้ ( 224 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter

ผู้น้อยขอคาราวะ 1 จอก 2จอก 3 จอก ...

พอดีกว่าเดี๋ยวจะเมาจะไม่ได้มาเขียนต่อ อิอิอิ
Date : 2009-07-29 13:09:01 By : zepherus
 


 

No. 22



โพสกระทู้ ( 479 )
บทความ ( 0 )



สถานะออฟไลน์


วันนี้เรามาดู Truncate กับ Delete

Truncate จะมีการลบข้อมูลที่เร็วกว่า Delete
ในกรณีที่ ต้องการลบข้อมูลทั้งหมด ใน Table
Date : 2009-07-31 08:31:31 By : taobsd
 


 

No. 23

Guest


การใช้ IN กับ BETWEEN

ในกรณีที่เรารู้ข้อมูลแน่นอน และมีการเรียงของข้อมูล

เช่น
SELECT CUSTOMER_NUMBER,CUSTOMER_NAME
FROM CUSTOMER
WHERE CUSTOMER_NUMBER IN (1000,1001,1002)

กับ
SELECT CUSTOMER_NUMBER,CUSTOMER_NAME
FROM CUSTOMER
WHERE CUSTOMER_NUMBER BETWEEN 1000 AND 1002

แบบใช้ BETWEEN จะมีการ Query ได้เร็วกว่า

=============================================================

ดูเหมือนจะดีครับ
แต่ในความเป็นจริงแล้วการเขียนโปรแกรมเรานึกถึง การเขียนให้สามารถ reuse ได้ง่าย
ดังนั้นควรจะใช้ IN นะครับ
Date : 2010-08-19 15:52:57 By : ปากหมาน
 


 

No. 24



โพสกระทู้ ( 93 )
บทความ ( 0 )



สถานะออฟไลน์


+1
Date : 2010-08-19 16:08:19 By : Mr.Poo
 


 

No. 25

Guest


+1
Date : 2012-10-12 10:37:20 By : OAT
 

ลองใช้ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : เทคนิคเพิ่มความเร็วในการ Query T-SQL ลำดับขอบเครื่องหมาย มีผลในการค้นหาเป็นอย่างมาก
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= บวกไม่ถูกไม่บันทึกให้ (ไม่อยากกรอกให้ยุ่งยากก็ล็อกอินเป็นสมาชิก)







เว็บไซต์เพื่อนพี่น้อง : Voake , LampThai , Memory Server

Load balance : Server TC-00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2013 All Rights Reserved.
for Contact Us : [Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 084-715-5121 อัตราราคา คลิกที่นี่

Inline

Back to Top