ฉันมีแบบสอบถามสองสามข้อที่เรียกจากแอปพลิเคชันเว็บ C # .NET ซึ่งรวดเร็วสำหรับฉันเสมอ (ฉันเป็นผู้ดูแลระบบภายใน SQL Server) แต่สำหรับกลุ่มผู้ใช้ (กลุ่มโดเมนที่มีสิทธิ์ที่จำเป็น) แบบสอบถามนั้นช้ามาก จุดที่มันหมดเวลาในแอปพลิเคชัน
อะไรจะทำให้การค้นหาเดียวกันที่แน่นอนนั้นทำงานต่างกันสำหรับผู้ใช้ที่ต่างกัน
ข้อมูลเพิ่มเติม:
- แบบสอบถามเป็นแบบอินไลน์ SQL ในรหัส C # ไม่ใช่ขั้นตอนการจัดเก็บ
- แอปใช้การรับรองความถูกต้องของโดเมนและทั้งผู้ใช้และตัวฉันเองเรียกใช้แบบสอบถามผ่านแอป
- ดูเหมือนว่าปัญหานี้เป็นแผนที่แตกต่างกันและมีการแคชหนึ่งครั้งดังนั้นจึงเป็นเหตุผลที่แตกต่างกันสำหรับผู้ใช้ที่ต่างกัน มีบางอย่างที่ส่งผลต่อแคชเพราะตอนนี้คิวรีช้าสำหรับฉันผ่านแอปและรวดเร็วใน SQL Server Management Studio
exact same query
) มันไม่ควรเป็นการดมกลิ่นพารามิเตอร์ (ผู้ใช้ได้รับแผนการที่ไม่ถูกต้องสำหรับพารามิเตอร์ที่ไม่ถูกต้อง) แต่ผู้ใช้ค่อนข้างได้รับแผนการแตกต่างกันสำหรับพารามิเตอร์เดียวกัน (s) อาจเป็นเพราะการตั้งค่าเช่นquoted_identifier
และarithabort
ซึ่งคุณสามารถเปรียบเทียบsys.dm_exec_sessions
สำหรับผู้ใช้ที่รวดเร็วและผู้ใช้ที่ช้าหรืออาจเป็นเพราะพวกเขามีสกีมาเริ่มต้นและวัตถุที่แตกต่างกันมีการอ้างอิงโดยไม่มีคำนำหน้าสคี การดมกลิ่นพารามิเตอร์อาจยังเกี่ยวข้อง (ดังนั้นทำไมหนึ่งในนั้นมีแผนไม่ดี)