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

2
ประสิทธิภาพการเลื่อนหน้าด้วยการเรียงลำดับที่กำหนดเองได้หลายล้านแถว
ในแอปพลิเคชันของเราเรามีตารางที่ผู้ใช้สามารถเลื่อนดูระเบียนจำนวนมาก (10-20 ล้าน) กริดรองรับการเรียงลำดับจากน้อยไปมากและจากมากไปน้อยในคอลัมน์จำนวนมาก (20+) ค่าจำนวนมากยังไม่ซ้ำกันดังนั้นแอปพลิเคชันจึงเรียงลำดับตาม id เป็นตัวแบ่งไทม์เบรกเพื่อให้แน่ใจว่าแถวปรากฏบนหน้าเดียวกันเสมอ ตัวอย่างเช่นหากผู้ใช้ต้องการเรียงลำดับตามขนาดวิดเจ็ต (เริ่มต้นที่ใหญ่ที่สุด) แอปพลิเคชันจะสร้างคิวรีที่มีลักษณะดังนี้: SELECT TOP 30 * -- (Pretend that there is a list of columns here) FROM Test -- WHERE widgetSize > 100 ORDER BY widgetSize DESC, id ASC เคียวรีนี้ใช้เวลา ~ 15s ในการรัน (ด้วยข้อมูลที่แคช) ค่าใช้จ่ายส่วนใหญ่ดูเหมือนจะเรียงลำดับแถว ~ 1.3m โดย widgetSize ในความพยายามที่จะปรับแต่งแบบสอบถามนี้ฉันค้นพบว่าถ้าฉันเพิ่มในWHEREประโยคที่ จำกัด …

3
การแบ่งหน้าใน SQL Server
ฉันมีฐานข้อมูลขนาดใหญ่มากประมาณ 100 GB ฉันกำลังดำเนินการค้นหา: select * from <table_name>; และฉันต้องการแสดงแถวที่ 100 ถึง 200 เท่านั้น ฉันต้องการที่จะเข้าใจว่าสิ่งนี้เกิดขึ้นภายในได้อย่างไร ฐานข้อมูลดึงข้อมูลระเบียนทั้งหมดจากดิสก์ไปยังหน่วยความจำและส่งกลับแถวที่ 100 ถึง 400 ไปยังไคลเอนต์ที่ทำแบบสอบถามหรือไม่ หรือมีกลไกใดบ้างดังนั้นเฉพาะเรคคอร์ดเหล่านั้น (100 - 200) ที่ดึงมาจากฐานข้อมูล - โดยใช้กลไกการจัดทำดัชนีเช่น B-trees เป็นต้น? ฉันพบว่าสิ่งนี้เกี่ยวข้องกับแนวคิดเรื่องการแบ่งหน้า แต่ฉันไม่สามารถหาได้ว่ามันเกิดขึ้นภายในระดับฐานข้อมูลได้อย่างไร

2
หน้าต่างชดเชยตรงตามเวลาประทับ
ฉันกำลังเขียนคิวรีที่จะใช้ในหน้าผลลัพธ์สำหรับโซเชียลฟีด แนวคิดคือแอพมือถือจะขอรายการ N และให้เริ่มต้นวันที่และเวลาที่ฉันได้เรียก@CutoffTimeด้านล่าง วัตถุประสงค์ของเวลา cutoff คือการสร้างเมื่อหน้าต่างการเพจควรเริ่มทำงาน เหตุผลที่เราใช้การประทับเวลาแทนการชดเชยแถวคือการประทับเวลาจะทำให้เราหน้าจากตำแหน่งที่สอดคล้องกันเมื่อรับโพสต์ที่เก่ากว่าแม้ว่าจะมีการเพิ่มเนื้อหาโซเชียลใหม่ เนื่องจากรายการฟีดโซเชียลอาจมาจากตัวคุณเองหรือเพื่อนของคุณที่ฉันใช้UNIONเพื่อรวมผลลัพธ์จากทั้งสองกลุ่ม เดิมทีฉันลองใช้วิธีที่TheQuery_CTEไม่มีตรรกะUNIONและมันก็เป็นสุนัขช้า นี่คือสิ่งที่ฉันได้ทำ (รวมถึงตารางคีที่เกี่ยวข้อง): CREATE TABLE [Content].[Photo] ( [PhotoId] INT NOT NULL PRIMARY KEY IDENTITY (1, 1), [Key] UNIQUEIDENTIFIER NOT NULL DEFAULT NEWID(), [FullResolutionUrl] NVARCHAR(255) NOT NULL, [Description] NVARCHAR(255) NULL, [Created] DATETIME2(2) NOT NULL DEFAULT SYSUTCDATETIME(), ); CREATE TABLE [Content].[UserPhotoAssociation] ( [PhotoId] …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.