แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - weerachit

หน้า: [1]
1
พื้นฐาน การสร้าง statement sql ที่ทำให้การกระทำนั้นๆเร็วขึ้น

1.การ ค้นหาจะเร็วขึ้น ถ้าเลือกบาง filed มาแสดงแทนการใช้ *
ควรใช้
SELECT idfirst_namelast_nameagesubject FROM student_details
แทนการใช้
SELECT FROM student_details


2.ไม่ควรใช้คำสั่ง HAVING ที่ผิดวัตถุประสงค์ของคำสั่ง แม้จะได้ผลลัพธ์ที่เหมือนกัน เช่น
แบบที่ถูกต้อง
SELECT subjectcount(subject
FROM student_details 
WHERE subject 
!= 'Science' 
AND subject != 'Maths' 
GROUP BY subject

แบบที่ไม่ถูกต้อง

SELECT subject
count(subject
FROM student_details 
GROUP BY subject 
HAVING subject
!= 'Vancouver' AND subject!= 'Toronto'

3.ถ้าไม่จำเป็นอย่าใช้ query ย่อย ใน query หลัก

เขียนแบบนี้
SELECT name 
FROM employee 
WHERE 
(salaryage ) = (SELECT MAX (salary), MAX (age
FROM employee_details
AND 
dept 'Electronics'


แทนแบบนี้

SELECT name 
FROM employee
WHERE salary 
= (SELECT MAX(salaryFROM employee_details
AND 
age = (SELECT MAX(ageFROM employee_details
AND 
emp_dept 'Electronics'


4.การใช้ EXISTS, IN เพื่อการ join ตาราง
a.จะทำให้ประสิทธิภาพช้าลง
b.IN จะใช้ได้ดีกับแบบสอบถามย่อย
c.EXISTS มีประสิทธิภาพที่สุดในการใช้ในแบบสอบถามหลัก

ควรใช้

Select 
from product p 
where EXISTS 
(select from order_items o 
where o
.product_id p.product_id

แทนการใช้

Select 
from product p 
where product_id IN 
(select product_id from order_items)


5.ใช้ EXISTS แทน DISTINCT เมื่อใช้กับตารางที่มีความสัมพันธ์แบบ one-to-many

ควรใช้

SELECT d
.dept_idd.dept 
FROM dept d 
WHERE EXISTS 
SELECT 'X' FROM employee e WHERE e.dept d.dept); 

แทน

SELECT DISTINCT d
.dept_idd.dept 
FROM dept d
,employee e 
WHERE e
.dept e.dept

6. ใช้คำสั่ง UNION ALLแทน UNION.
ควรใช้

SELECT id
first_name 
FROM student_details_class10 
UNION ALL 
SELECT id
first_name 
FROM sports_team


แทนการใช้

SELECT id
first_namesubject 
FROM student_details_class10 
UNION 
SELECT id
first_name 
FROM sports_team


7.ควรระวังในการใช้คำสั่ง WHERE

ควรใช้

SELECT id
first_nameage FROM student_details WHERE age 10

แทนการใช้
SELECT idfirst_nameage FROM student_details WHERE age != 10





ควรใช้
SELECT product_idproduct_name 
FROM product 
WHERE unit_price BETWEEN MAX
(unit_price
and 
MIN(unit_price



แทนการใช้

SELECT product_id
product_name 
FROM product 
WHERE unit_price 
>= MAX(unit_price
and 
unit_price <= MIN(unit_price


ควรใช้

SELECT id
first_nameage 
FROM student_details 
WHERE age 
10

แทนการใช้

SELECT id
first_nameage 
FROM student_details 
WHERE age NOT
10


8.ให้เก็บ binary file ไว้ในระบบ file แล้วเก็บ path ไว้ในฐานข้อมูลแทนการเก็บข้อมูล แบบ binary เพราะจะทำให้ฐานข้อมูลมีขนาดใหญ่

9.ให้เขียนตามกฎที่ถูกต้องตามมาตรฐานของ ภาษา sql
a.ตัวพิมพ์ ใหญ่-เล็ก ตามกฎ
b.เริ่มการกระทำในบรรทัดใหม่
c.แยกคำด้วยช่องว่างเพียงเคาะเดียว




ขอบคุณข้อมูลจาก
http://beginner-sql-tutorial.com
http://beginner-sql-tutorial.com/sql-query-tuning.htm

หน้า: [1]