คำสั่งเหล่านั้นทำสองสิ่ง:
- ล้างแคชหน้าซึ่งจัดเก็บหน้าข้อมูลที่ถูกดึงออกมาจากดิสก์แล้ว (โดยปกติแล้วปัจจัยที่ใหญ่ที่สุดในการสืบค้นคือการเข้าถึงดิสก์)
- ล้างแคชแผนคิวรีซึ่งหมายความว่าเซิร์ฟเวอร์ต้องสร้างแผนคิวรีใหม่ ปกติจะไม่สำคัญยกเว้นปริมาณธุรกรรมที่สูงมาก
โดยทั่วไปคุณจะได้รับเวลาที่เทียบเท่ากับสถานการณ์ "กรณีที่แย่ที่สุด" - คุณเพิ่งรีบูตเซิร์ฟเวอร์และไม่มีอะไรอยู่ในหน่วยความจำ การเรียกใช้ครั้งต่อมาไม่จำเป็นต้องจ่ายค่าใช้จ่ายในการดึงข้อมูลจากดิสก์เนื่องจากหน้าเว็บเหล่านั้นถูกโหลดเข้าสู่หน่วยความจำแล้ว
สิ่งนี้คล้ายกับสถานการณ์ในโลกแห่งความจริงผู้ใช้รายแรกของคุณที่จะเรียกใช้คิวรีแบบเฉพาะเจาะจงนั้นอาจต้องรอนานกว่าการรันครั้งต่อไปโดยสมมติว่าคุณกำลังตรวจสอบข้อมูลเดิม
วิธีที่ดีที่ฉันชอบใช้คือการเรียกใช้หลายครั้งและรับค่าเฉลี่ย สิ่งนี้มีประโยชน์อย่างยิ่งในสภาพแวดล้อมที่ใช้ร่วมกันเนื่องจากคุณไม่สามารถควบคุมทรัพยากรที่ใช้ร่วมกันอย่างเต็มรูปแบบเช่น tempdb
คุณยังสามารถใช้คำสั่งเหล่านี้เพื่อรับข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่เกิดขึ้นจริงเบื้องหลัง:
SET STATISTICS IO ON
SET STATISTICS TIME ON
สิ่งเหล่านี้จะให้ข้อมูลโดยละเอียดเกี่ยวกับการอ่านหน้าจากดิสก์ (ต่อวัตถุ) การอ่านหน้าแบบลอจิคัลเวลาที่ใช้ในการรวบรวมแผนและเวลาที่ใช้ในการดำเนินการสืบค้น