คำถามติดแท็ก optimization

ในบริบทของฐานข้อมูลการปรับให้เหมาะสมหมายถึงกระบวนการของเครื่องมือเพิ่มประสิทธิภาพคิวรีที่เลือกแผนการดำเนินการทางกายภาพที่มีประสิทธิภาพ

2
การแทรกหลายแถวเทียบกับการแทรกแถวเดี่ยวหลายครั้ง
ในแอพของฉันฉันจะแทรกหลายแถวเมื่อฉันทำได้เพราะมันช่วยลดจำนวนรอบการเดินทางระหว่างฐานข้อมูลและแอป อย่างไรก็ตามฉันอยากรู้อยากเห็นมีข้อดีอื่น ๆ อีกไหม? ตัวอย่างเช่นหากมีการแทรกหลายแถวพร้อมกันเช่นนี้ insert into tbl (c1, c2) values (v1, v2) (v3, v4) เมื่อเทียบกับ: insert into tbl (c1, c2) values (v1, v2) insert into tbl (c1, c2) values (v3, v4) และตารางมีดัชนีดัชนีคำนวณหนึ่งครั้งในกรณีแรกและสองครั้งในกรณีที่สองหรือไม่ หรือมันมักจะใส่ครั้งเดียวต่อ? สมมติว่าแบบสอบถามทั้งสองอยู่ในธุรกรรมเดียวกัน ฉันใช้ PostgreSQL

1
OPTION FORCE ORDER ปรับปรุงประสิทธิภาพจนกว่าแถวจะถูกลบ
ฉันมีแบบสอบถาม SQL Server 2008 ที่ค่อนข้างซับซ้อน (ประมาณ 200 บรรทัดของ SQL ที่มีความหนาแน่นพอสมควร) ซึ่งไม่ทำงานตามที่ฉันต้องการ เมื่อเวลาผ่านไปประสิทธิภาพจะลดลงจากประมาณ 0.5 วินาทีเป็นประมาณ 2 วินาที ดูที่แผนการดำเนินการมันค่อนข้างชัดเจนว่าการเรียงลำดับตัวเชื่อมใหม่จะทำให้ประสิทธิภาพดีขึ้น ฉันทำและมันลงไปถึงประมาณ 3 วินาที ตอนนี้แบบสอบถามมีคำแนะนำ "คำสั่งตัวเลือกการบังคับ"และชีวิตเป็นสิ่งที่ดี ตามมาด้วยฉันวันนี้ล้างฐานข้อมูล ฉันเก็บประมาณ 20% ของแถวที่จะดำเนินการในฐานข้อมูลที่เกี่ยวข้องอื่นใดนอกจากการลบแถว ... แผนปฏิบัติการที่ได้รับการทยอย มันผิดทั้งหมดจำนวนแถวย่อยบางอย่างจะกลับมาและ (ตัวอย่าง) แทนที่ a: <Hash> กับ <NestedLoops Optimized='false' WithUnorderedPrefetch='true'> ในขณะนี้เวลาของแบบสอบถามเริ่มจากประมาณ. 3 ถึงประมาณ 18 วินาที (!) เพียงเพราะฉันลบแถว หากฉันลบคำใบ้คำค้นหาฉันกลับไปใช้เวลาสอบถามข้อมูลประมาณ 2 วินาที ดีกว่า แต่แย่กว่านั้น ฉันได้ทำซ้ำปัญหาหลังจากกู้คืนฐานข้อมูลไปยังสถานที่และเซิร์ฟเวอร์หลายแห่ง …

2
SQL Server ประเมินฟังก์ชันหนึ่งครั้งสำหรับทุกแถวหรือไม่
ฉันมีคำถามเช่นนี้ SELECT col1 FROM MyTable WHERE DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE())) BETWEEN col2 AND col3 ; สิ่งนี้จะให้คำแนะนำเครื่องมือในแผนการดำเนินการที่คล้ายกับสิ่งนี้: ที่ไม่dateaddเป็นส่วนหนึ่งของการแสวงหาภาคได้รับการดำเนินการสำหรับแถวในแบบสอบถามทุกครั้งหรือไม่ หรือ SQL Server คำนวณค่าหนึ่งครั้งสำหรับแบบสอบถามทั้งหมดหรือไม่

3
Yelp คำนวณระยะทางในฐานข้อมูลได้อย่างมีประสิทธิภาพได้อย่างไร
ตัวอย่างเช่นฉันมีตาราง: Business(BusinessID, Lattitude, Longitude) ทั้งหมดได้รับการจัดทำดัชนีแน่นอน นอกจากนี้ยังมี 1 ล้านบันทึก สมมติว่าฉันต้องการค้นหาธุรกิจที่ใกล้เคียงกับ 106,5 ตัวอย่างเช่นฉันจะทำอย่างไร ถ้าฉันทำ SELECT * FROM Business WHERE (Some formula to compute distance here) < 2000 ตัวอย่างเช่นหรือถ้าฉันทำ SELECT * FROM Business TOP 20 ในทางทฤษฎีคอมพิวเตอร์จะต้องคำนวณระยะทางสำหรับเจ้าหน้าที่ทุกคนในขณะที่ในทางปฏิบัติเฉพาะผู้ที่มี lattitude และลองจิจูดในช่วงที่ควรจะคำนวณ ดังนั้นฉันจะทำสิ่งที่ฉันต้องการใน PhP หรือ SQL ได้อย่างไร ฉันรู้สึกซาบซึ้งกับคำตอบที่ได้รับ ฉันกำลังใช้ mysql และพวกเขาไม่มีอะไรมีประสิทธิภาพมากกว่าโซลูชันที่ชัดเจน MySQL อวกาศไม่มีฟังก์ชันคำนวณระยะทางเช่นกัน

1
ประโยชน์ของการเรียกใช้ OPTIMIZE TABLE Query ใน MySQL DB Server
ฉันอยากจะรู้ว่าอะไรคือประโยชน์ [การปฏิบัติจริง ๆ ] ที่สามารถอ่านได้อีกครั้งโดยการเรียกใช้OPTIMIZE TABLE tbl_nameแบบสอบถามใน MySQL Server ฉันตรวจสอบสิ่งนี้ครั้งเดียวและพบว่าหลังจากที่เรียกใช้แล้วการเข้าใช้ฐานข้อมูลครั้งต่อไปอาจใช้เวลานานอาจเนื่องมาจากการย้ายชิ้นส่วนหรือมากกว่านั้น แต่การเข้าชมครั้งต่อมาแสดงประสิทธิภาพเป็นอย่างมากฉันไม่แน่ใจว่า ด้วยการเพิ่มประสิทธิภาพหรือการเพิ่มประสิทธิภาพเพียงอย่างเดียวทำเคล็ดลับนี้ ผู้ใดสามารถชี้แนะฉันด้วยค่าความแตกต่างของประสิทธิภาพที่แท้จริงถ้าเป็นไปได้เพื่อที่ฉันจะได้สามารถทำงานต่อไปได้มากขึ้นเมื่อทำงานกับ MySQL กำลังได้รับแรงโน้มถ่วงในโครงการของเรา

4
ฉันจะเพิ่มประสิทธิภาพการสืบค้น MySQL นี้เพิ่มเติมได้อย่างไร
ฉันมีคำถามที่ใช้เวลานานในการรัน (15+ วินาที) และยิ่งแย่ลงเมื่อเวลาผ่านไปเมื่อชุดข้อมูลของฉันเติบโต ฉันเคยปรับปรุงสิ่งนี้ในอดีตและได้เพิ่มดัชนีการเรียงลำดับระดับโค้ดและการเพิ่มประสิทธิภาพอื่น ๆ แต่ก็ต้องมีการปรับแต่งเพิ่มเติม SELECT sounds.*, avg(ratings.rating) AS avg_rating, count(ratings.rating) AS votes FROM `sounds` INNER JOIN ratings ON sounds.id = ratings.rateable_id WHERE (ratings.rateable_type = 'Sound' AND sounds.blacklisted = false AND sounds.ready_for_deployment = true AND sounds.deployed = true AND sounds.type = "Sound" AND sounds.created_at > "2011-03-26 21:25:49") GROUP …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.