คำถามติดแท็ก materialized-view

นิยามเหมือนมุมมอง แต่เก็บข้อมูลถาวรเช่นตาราง Materialized Views เป็นคุณลักษณะของ RDBMS จำนวนหนึ่งซึ่งรวมถึง Oracle, DB2 และ postgres SQL Server มีคุณลักษณะที่คล้ายกันที่เรียกว่า Indexed View ซึ่งถือว่าคล้ายกันมากพอที่จะอยู่ภายใต้แท็กนี้

1
วิธีตั้งค่ามุมมองที่จัดทำดัชนีไว้เมื่อเลือก TOP 1 ด้วย ORDER BY จากตารางที่แตกต่างกัน
ฉันกำลังพยายามติดตั้งมุมมองที่จัดทำดัชนีไว้ในสถานการณ์จำลองต่อไปนี้เพื่อให้แบบสอบถามต่อไปนี้ทำงานได้โดยไม่สแกนดัชนีคลัสเตอร์ เมื่อใดก็ตามที่ฉันสร้างมุมมองดัชนีสำหรับแบบสอบถามนี้แล้วใช้มันดูเหมือนว่าจะไม่สนใจดัชนีใด ๆ ที่ฉันวางไว้: -- +++ THE QUERY THAT I WANT TO IMPROVE PERFORMANCE-WISE +++ SELECT TOP 1 * FROM dbo.TB_test1 t1 INNER JOIN dbo.TB_test2 t2 ON t1.PK_ID1 = t2.FK_ID1 ORDER BY t1.somethingelse1 ,t2.somethingelse2; GO การตั้งค่าตารางมีดังนี้: สองตาราง พวกเขาจะเข้าร่วมโดยการเข้าร่วมภายในโดยแบบสอบถามด้านบน และเรียงลำดับโดยคอลัมน์จากคอลัมน์แรกจากนั้นคอลัมน์จากตารางที่สองโดยแบบสอบถามด้านบน เลือก TOP 1 เท่านั้น (ในสคริปต์ด้านล่างมีบางบรรทัดเพื่อสร้างข้อมูลทดสอบในกรณีที่ช่วยทำให้เกิดปัญหา) -- +++ TABLE SETUP +++ CREATE …

2
เหตุใดใน Oracle 11gR2 ฉันไม่สามารถปล่อยมุมมองที่ปรากฏขึ้นกับผู้ใช้รายเดียวกับที่สร้างขึ้นได้
ฉันสร้างมุมมองที่ปรากฏกับผู้ขอชื่อมันDI_TEST_AL MY_MVIEWมันปรากฏในUSER_OBJECTSตารางในขณะที่MATERIALIZED VIEWฉันพยายามวางมันฉันได้รับข้อความแสดงความสำเร็จ แต่วัตถุยังอยู่ที่นั่น อันที่จริงถ้าฉันพยายามที่จะสร้างมันขึ้นมาใหม่ฉันได้รับข้อผิดพลาดเช่น "วัตถุมีอยู่แล้ว" ฉันเห็นว่ามีตารางที่มีชื่อเดียวกันกับสคีมาอื่น ฉันคิดว่าไม่ควรทำให้เกิดปัญหา แต่ฉันรู้สึกอยากพูดถึงมัน นี่คือเอาต์พุต SQL * Plus: SQL*Plus: Release 11.2.0.1.0 Production on Mon Aug 1 17:01:50 2011 SQL> select object_name, object_type, owner from all_objects where object_name = 'MY_MVIEW'; OBJECT_NAME OBJECT_TYPE OWNER ----------- ----------------- ---------- MY_MVIEW MATERIALIZED VIEW DI_TEST_AL MY_MVIEW TABLE DIDEV11 SQL> DROP MATERIALIZED …

1
รีเฟรชมุมมองที่เป็นรูปธรรมของ PostgreSQL โดยอัตโนมัติโดยไม่ต้องใช้ทริกเกอร์
ฉันสร้างมุมมองที่มีชื่อปรากฏบนโต๊ะห่อหุ้มข้อมูลต่างประเทศview_table_A สิ่งที่ฉันต้องการสำหรับมุมมองที่จะได้รับการปรับปรุงโดยอัตโนมัติทุกครั้งหลังใส่ใหม่table_A table_Aฉันพยายามทำสิ่งนี้ด้วยทริกเกอร์ แต่มันไม่ทำงาน เป็นไปได้ไหมที่จะรีเฟรชมุมมองที่ปรากฏขึ้นโดยอัตโนมัติโดยไม่ใช้ทริกเกอร์

1
ทำไมคำใบ้ READPAST ทำให้มุมมองที่จัดทำดัชนีถูกละเว้น?
ฉันกำลังตรวจสอบโดยใช้READPASTคำแนะนำเพื่อลดการล็อกทรัพยากรในระบบย่อยทางการเงินของแอปพลิเคชันของเรา ดูเหมือนจะเป็นวิธีที่ดีในการไปเพราะบันทึกการทำธุรกรรมทางการเงินนั้นเคยเพิ่มไม่เคยอัพเดทหรือลบ แถวเดียวที่จะถูกข้ามไปคือแถวใหม่ที่แทรกอยู่ภายในธุรกรรม พวกเขาไม่มีอยู่จริงกับโลกภายนอกจนกว่าจะมีการทำธุรกรรม อย่างไรก็ตามฉันสังเกตเห็นประสิทธิภาพการทำงานแย่ลงสำหรับการค้นหาที่ใช้มุมมองที่จัดทำดัชนีซึ่งฉันได้ใส่READPASTคำใบ้ไว้ เปรียบเทียบแผนแบบสอบถามมันดูเหมือนกับคำใบ้เครื่องมือเพิ่มประสิทธิภาพแบบสอบถามเลือกที่จะไม่ใช้มุมมองที่จัดทำดัชนีและแทนที่จะกลับไปที่การรักษามันเหมือนมุมมองปกติ ฉันไม่แน่ใจว่าทำไมถึงเป็นเช่นนั้น ฉันคิดว่ามุมมองที่จัดทำดัชนีจะเหมือนกับดัชนีอื่น ๆ ในคีย์นั้นสามารถล็อกระหว่างการดำเนินการและการเพิ่มREADPASTจะทำงานในทำนองเดียวกัน SELECT TOP 1 isa.InvoiceId FROM Financial_InvoiceSummaryAmounts isa WITH (READPAST) WHERE isa.TotalOwedAmount = 0.0 SELECT TOP 1 isa.InvoiceId FROM Financial_InvoiceSummaryAmounts isa WHERE isa.TotalOwedAmount = 0.0 การเพิ่มNOEXPANDคำใบ้ดูเหมือนจะใช้งานได้ แต่ฉันสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับสาเหตุที่READPASTทำให้เครื่องมือเพิ่มประสิทธิภาพคิวรีสร้างตัวเลือกนั้นตั้งแต่แรก (เป็นส่วนหนึ่งของคำตอบแบบเต็ม)

1
เป็นไปได้หรือไม่ที่จะสำรองและเรียกคืนมุมมองที่เป็นรูปธรรมด้วยข้อมูล
ฉันมีมุมมองที่เป็นรูปธรรมซึ่งยากต่อการคำนวณซึ่งฉันต้องการสำรองและเรียกคืนโดยใช้ข้อมูลที่จัดเก็บจริงไม่ใช่โดยการคำนวณใหม่ เป็นไปได้ใน PostgreSQL 9.4? (ทางเลือกคือการสร้างตารางจริง แต่ยากที่จะ "รีเฟรช")

2
จำกัด การทำซ้ำสำหรับการดูการรีเฟรชที่สมบูรณ์แบบสมบูรณ์หรือเทียบเท่าแบบแมนนวล
ล็อกmaterialized view (MV)สามารถใช้เพื่ออนุญาตให้ MV ทำการรีเฟรชอย่างรวดเร็วซึ่งแก้ไขเฉพาะข้อมูลที่เปลี่ยนแปลง อย่างไรก็ตามเงื่อนไขต่าง ๆ ป้องกัน MV จากการใช้บันทึกและดังนั้นจึงต้องมีการรีเฟรชที่สมบูรณ์ ออราเคิลดำเนินการรีเฟรชสมบูรณ์แบบอะตอมมิกเพื่อลบและแทรกของทุกระเบียน มันทำเช่นนี้แม้ว่าในที่สุดจะไม่มีการเปลี่ยนแปลงข้อมูล มีวิธีที่จะทำให้การจำลองแบบนี้เป็นเรื่องเกี่ยวกับการสร้างซ้ำได้หรือไม่? MERGE ตามด้วย DELETE ต้องการเคียวรีซอร์สสองครั้ง มันจะคุ้มค่าหรือไม่ที่จะรวบรวมข้อมูลจำนวนมากเพื่อทำการรวมเป็นกลุ่มและลบ? มีวิธีที่ดีกว่า? ปรับปรุง: ฉันสำรวจโดยใช้ตารางชั่วคราวทั่วโลกเป็นพื้นที่จัดเตรียม แม้ว่าจะใช้การทำซ้ำน้อยกว่าครึ่ง แต่พวกเขายังคงใช้งานได้มาก
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.