ฉันต้องการเปรียบเทียบการสืบค้น SQL บางข้อฐานข้อมูลของฉัน PostgreSQL มีวิธีที่ฉันสามารถเวลา SQL แบบสอบถามใช้ใด ๆpsql?
ฉันต้องการเปรียบเทียบการสืบค้น SQL บางข้อฐานข้อมูลของฉัน PostgreSQL มีวิธีที่ฉันสามารถเวลา SQL แบบสอบถามใช้ใด ๆpsql?
คำตอบ:
สามารถเปิดใช้งานการกำหนดเวลาด้วย\timingที่พร้อมต์ psql (ดังที่คาเลบกล่าวไว้แล้ว)
หากคุณอยู่ที่ 8.4 หรือสูงกว่าคุณสามารถเพิ่มอาร์กิวเมนต์เปิด / ปิดเป็นทางเลือก\timingซึ่งจะมีประโยชน์หากคุณต้องการตั้งเวลาในไฟล์. psqlrc - จากนั้นคุณสามารถตั้งค่า\timing onอย่างชัดเจนในสคริปต์โดยที่ธรรมดา\timingจะสลับกัน มันปิด
เวลาที่\timingส่งคืนยังรวมถึงเวลาแฝงเครือข่ายหากคุณกำลังเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกล
เมื่อคุณไม่ต้องการสิ่งนั้นและไม่ต้องการเอาต์พุตคิวรีให้ใช้งานได้ดีกว่าEXPLAIN ANALYZEซึ่งผลลัพธ์แผนการเคียวรีด้วยตัววางแผนประมาณพร้อมกับเวลาดำเนินการจริง
ตัวอย่างเช่น, EXPLAIN ANALYZE SELECT foo from bar ;
explain analyzeอัตราผลตอบแทนที่ประมาณสองเท่าของสิ่งที่ฉันเห็นเมื่อใช้\timingซึ่งตรงข้ามกับสิ่งที่ฉันคาดหวังจากความคิดเห็นที่นี่เกี่ยวกับเวลาแฝงของเครือข่าย ฉันสงสัยว่ามีค่าใช้จ่ายในการดำเนินการปกติของanalyzeที่เพิ่มไปยังเวลาแบบสอบถาม จากเอกสารที่ฉันคิดว่าEXPLAIN (ANALYZE, TIMING OFF) SELECT foo FROM barจะให้ข้อมูลเวลาที่มีประโยชน์มากขึ้น ดูpostgresql.org/docs/9.6/static/sql-explain.htmlเพื่อดูรายละเอียด