ฉันรันการทดสอบอย่างรวดเร็วบน SQL Server 2012 บนกล่อง Hyper-v 8 GB RAM คุณสามารถเห็นผลลัพธ์ได้ด้วยตัวคุณเอง ฉันไม่ได้ใช้แอพพลิเคชั่นที่มีหน้าต่างอื่นนอกเหนือจาก SQL Server Management Studio ขณะทำการทดสอบเหล่านี้
สคีมาของตารางของฉัน:
CREATE TABLE [dbo].[employee](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_employee] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
จำนวนระเบียนทั้งหมดในEmployee
ตาราง: 178090131 (ประมาณ 178 ล้านแถว)
คำค้นหาแรก:
Set Statistics Time On
Go
Select Count(*) From Employee
Go
Set Statistics Time Off
Go
ผลการค้นหาครั้งแรก:
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 35 ms.
(1 row(s) affected)
SQL Server Execution Times:
CPU time = 10766 ms, elapsed time = 70265 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
คำค้นหาที่สอง:
Set Statistics Time On
Go
Select Count(1) From Employee
Go
Set Statistics Time Off
Go
ผลการค้นหาครั้งที่สอง:
SQL Server parse and compile time:
CPU time = 14 ms, elapsed time = 14 ms.
(1 row(s) affected)
SQL Server Execution Times:
CPU time = 11031 ms, elapsed time = 70182 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
คุณสามารถสังเกตเห็นว่ามีความแตกต่างของ 83 (= 70265 - 70182) มิลลิวินาทีซึ่งสามารถนำมาประกอบกับสภาพของระบบที่แน่นอนได้อย่างแม่นยำเมื่อมีการเรียกใช้แบบสอบถาม นอกจากนี้ฉันได้ทำการวิ่งครั้งเดียวดังนั้นความแตกต่างนี้จะแม่นยำมากขึ้นถ้าฉันวิ่งหลายครั้งและทำการเฉลี่ยโดยเฉลี่ย หากชุดข้อมูลขนาดใหญ่มีความแตกต่างน้อยกว่า 100 มิลลิวินาทีเราสามารถสรุปได้อย่างง่ายดายว่าเคียวรีสองรายการนั้นไม่มีความแตกต่างด้านประสิทธิภาพที่แสดงโดย SQL Server Engine
หมายเหตุ : RAM ใช้งานได้ใกล้ 100% ทั้งการรัน ฉันเริ่มบริการ SQL Server ใหม่ก่อนเริ่มการทำงานทั้งสองครั้ง