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

โครงสร้างฐานข้อมูลที่สามารถปรับปรุงความเร็วของการสืบค้นที่ราคาของพื้นที่ดิสก์และการแทรก / การปรับปรุงที่ช้ากว่า มันเก็บสำเนาของคอลัมน์อย่างน้อยหนึ่งคอลัมน์ที่เรียงลำดับ แต่โครงสร้างข้อมูลแตกต่างกันเพื่อให้เข้าถึงได้เร็วขึ้น

3
วิธีที่ไม่เจ็บปวดในการสร้างดัชนีคลัสเตอร์บนโต๊ะขนาดใหญ่หรือไม่
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา ดังนั้นเราจึงมีเว็บไซต์ลูกค้าที่ร้องเรียนเกี่ยวกับประสิทธิภาพที่ช้ามาก ฉันลองดูหนึ่งครั้งและเห็นได้ชัดว่าปัญหานี้เกิดขึ้นเนื่องจากSomebody Else (grrrr) ออกแบบตารางที่มีระเบียนมากกว่า 20 ล้านรายการโดยไม่มีดัชนีคลัสเตอร์ ตอนนี้ฉันต้องการสร้างดัชนีคลัสเตอร์บนตารางนั้น - แต่ในสภาพแวดล้อมการทดสอบของฉันcreate indexคำสั่งของฉันทำงานเป็นเวลาหนึ่งชั่วโมงและยังไม่เสร็จ ไซต์ลูกค้าเป็นร้านค้าที่ใช้งานได้ตลอด 24 ชั่วโมงทุกวันและไม่สามารถเสียเวลาลงได้หนึ่งชั่วโมงในขณะที่ฉันสร้างดัชนี มีวิธีการบังคับใช้เดรัจฉานน้อยกว่าในการสร้างดัชนีที่จะทำให้งานเสร็จอย่างรวดเร็วหรือทำด้วยวิธีที่ชาญฉลาดซึ่งจะไม่ทำลายประสิทธิภาพของเซิร์ฟเวอร์โดยสิ้นเชิงในขณะที่กำลังทำงานอยู่หรือไม่? เรากำลังใช้ SQL Server Enterprise Edition

7
ฉันจะหาคำแนะนำเกี่ยวกับกลยุทธ์ดัชนีได้ที่ไหน
พวกเราส่วนใหญ่คงเห็นด้วยว่าการใช้ดัชนีฐานข้อมูลนั้นดี ดัชนีและประสิทธิภาพมากเกินไปสามารถลดระดับลงได้จริง ตามกฎทั่วไปแล้วควรจะทำดัชนีฟิลด์ใด ฟิลด์ใดที่ไม่ควรทำดัชนี มีกฎอะไรบ้างสำหรับการใช้ดัชนีในขณะที่สร้างความสมดุลระหว่างดัชนีมากเกินไปและไม่เพียงพอเพื่อให้เกิดการปรับปรุงประสิทธิภาพไม่ใช่การย่อยสลาย?
22 index 

2
ฉันต้องมีดัชนีแยกต่างหากสำหรับการสืบค้นแต่ละประเภทหรือไม่หรือจะใช้ดัชนีหลายคอลัมน์ได้หรือไม่
ฉันค่อนข้างรู้คำตอบสำหรับคำถามนี้อยู่แล้ว แต่ฉันรู้สึกเสมอว่ามีมากกว่าที่ฉันต้องรับในหัวข้อ ความเข้าใจพื้นฐานของฉันคือการพูดโดยทั่วไปดัชนีเดียวที่รวมเขตข้อมูลทั้งหมดที่คุณอาจทำการสืบค้น / เรียงลำดับในเวลาที่กำหนดไม่น่าจะมีประโยชน์ แต่ฉันได้เห็นสิ่งนี้แล้ว บางคนคิดว่า "เอาล่ะถ้าเราใส่ข้อมูลทั้งหมดลงในดัชนีฐานข้อมูลก็สามารถใช้เพื่อค้นหาสิ่งที่ต้องการ" โดยไม่ต้องเห็นแผนการดำเนินการสำหรับการสืบค้นจริงบางข้อ ลองนึกภาพโต๊ะแบบนี้: id int pk/uid name varchar(50) customerId int (foreign key) dateCreated datetime ผมอาจจะเห็นดัชนีเดียวรวมทั้งname, customerIdและdateCreatedสาขา แต่ความเข้าใจของฉันคือว่าดัชนีดังกล่าวจะไม่ถูกใช้ในแบบสอบถามเช่น: SELECT [id], [name], [customerId], [dateCreated] FROM Representatives WHERE customerId=1 ORDER BY dateCreated สอบถามเช่นมันดูเหมือนว่าผมว่าเป็นความคิดที่ดีกว่าจะเป็นดัชนีรวมทั้งcustomerIdและdateCreatedเขตที่มีcustomerIdข้อมูลเป็น 'ครั้งแรก' สิ่งนี้จะสร้างดัชนีที่จะมีการจัดระเบียบข้อมูลในลักษณะที่แบบสอบถามนี้สามารถค้นหาสิ่งที่ต้องการได้อย่างรวดเร็ว - ตามลำดับที่ต้องการ อีกสิ่งที่ฉันเห็นบ่อยครั้งเป็นอันดับแรกคือดัชนีแต่ละรายการในแต่ละฟิลด์ เพื่อให้แต่ละคนบนname, customerIdและdateCreatedสาขา ไม่เหมือนตัวอย่างแรกข้อตกลงประเภทนี้บางครั้งฉันก็ดูเหมือนจะมีประโยชน์บางส่วน แผนการดำเนินการของแบบสอบถามอาจแสดงให้เห็นว่าอย่างน้อยก็ใช้ดัชนีในcustomerIdเพื่อเลือกระเบียน แต่ไม่ได้ใช้ดัชนีกับdateCreatedเขตข้อมูลเพื่อเรียงลำดับ ฉันรู้ว่านี่เป็นคำถามที่กว้างขวางเพราะคำตอบเฉพาะสำหรับคำถามใด ๆ ในชุดของตารางใด …
22 sql-server  index 

3
วิธีเลือกการเปรียบเทียบสำหรับฐานข้อมูลสากล?
ฉันกำลังออกแบบฐานข้อมูลที่จะเก็บข้อมูลในภาษาต่าง ๆ (โดยใช้ UTF-8) ดังนั้นฉันคิดว่าวิธีที่ดีที่สุดในการแสดงผลลัพธ์ของแบบสอบถามคือการสั่งซื้อตามภาษาของผู้ใช้ในระหว่างการสืบค้น ( เพราะมีมากกว่าหนึ่ง วิธีที่ถูกต้องในการทำเช่นนั้น ) ดังนี้: SELECT a < b COLLATE "de_DE" FROM test1; สมมติว่านี่เป็นวิธีที่ถูกต้องในการทำงานกับข้อมูลระหว่างประเทศซึ่งเป็นการเปรียบเทียบที่ดีที่สุดสำหรับฐานข้อมูลตัวเอง? เอกสาร PostgreSQL บอกว่า : การเปรียบเทียบทั้ง C และ POSIX ระบุพฤติกรรม "ดั้งเดิม C" ซึ่งมีเพียงตัวอักษร ASCII "A" ถึง "Z" เท่านั้นที่จะถือว่าเป็นตัวอักษรและการเรียงลำดับจะกระทำอย่างเคร่งครัดโดยค่าไบต์รหัสตัวอักษร ฉันคิดว่านี่เป็นตัวเลือกที่ดีที่สุดในกรณีนี้หรือฉันผิด (คำถามโบนัส: มันช้าเกินไปที่จะเลือกการเรียงในแบบสอบถามหรือไม่)

1
เหตุใดจึงสร้างดัชนี ... ด้วยออนไลน์ = บล็อกการเข้าถึงตารางในช่วงเวลาไม่กี่นาที
ฉันมีตารางที่มีอยู่: CREATE TABLE dbo.ProofDetails ( ProofDetailsID int NOT NULL CONSTRAINT PK_ProofDetails PRIMARY KEY CLUSTERED IDENTITY(1,1) , ProofID int NULL , IDShownToUser int NULL , UserViewedDetails bit NOT NULL CONSTRAINT DF_ProofDetails_UserViewedDetails DEFAULT ((0)) ); ตารางนี้มี 150,000,000 แถว ระบบกำลังทำงาน 24x7x365 ดังนั้นจึงไม่มีหน้าต่างการบำรุงรักษาที่เกิดขึ้นเป็นประจำ ฉันต้องการเพิ่มดัชนีลงในตารางและด้วย Enterprise Edition ของ SQL Server ฉันควรจะทำเช่นนั้นได้โดยไม่ปิดกั้นการเข้าถึงการเขียนลงในตาราง คำสั่งที่ฉันใช้คือ: CREATE INDEX IX_ProofDetails_ProofID_Etc …

3
ตกลงหรือไม่ที่จะเพิ่มดัชนีหายไป?
ฉันมักจะใช้ SSMS เพื่อทดสอบขั้นตอนการจัดเก็บช้าของฉันสำหรับดัชนีที่ขาดหายไป เมื่อใดก็ตามที่ฉันเห็น "ดัชนีที่หายไป (ผลกระทบ xxx)" ปฏิกิริยาเข่าของฉันคือการสร้างดัชนีใหม่ ผลลัพธ์นี้ทำให้การสืบค้นเร็วขึ้นทุกครั้งที่ฉันสามารถบอกได้ มีเหตุผลอะไรที่ฉันไม่ควรทำต่อไป?

4
“ ดัชนี” หมายถึงอะไรใน RDBMS [ปิด]
เป็นการยากที่จะบอกสิ่งที่ถูกถามที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือโวหารและไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันใช้ดัชนีอย่างที่ผู้พัฒนาส่วนใหญ่ทำ (ส่วนใหญ่อยู่บน ... ดี! ดัชนี) แต่ฉันแน่ใจว่ามีวิธีที่ละเอียดอ่อนมากมายในการปรับฐานข้อมูลโดยใช้ดัชนี ฉันไม่แน่ใจว่าเฉพาะเจาะจงกับการใช้งาน DBMS หรือไม่ คำถามของฉันคืออะไรเป็นตัวอย่างที่ดีของวิธีการใช้ดัชนี (ยกเว้นกรณีพื้นฐานที่ชัดเจน) และ DBMS เพิ่มประสิทธิภาพฐานข้อมูลอย่างไรเมื่อคุณระบุดัชนีในตาราง
21 index  rdbms 


2
“ Recheck Cond:” บรรทัดในแผนคิวรีพร้อมการสแกนดัชนีบิตแมป
นี่คือการแยกความคิดเห็นจากคำถามก่อนหน้า: Postgres 9.4.4 แบบสอบถามใช้เวลาตลอดไป ใช้ PostgreSQL 9.4 มีเสมอดูเหมือนว่าจะเป็นสายหลังจากสแกนดัชนีบิตแมปในการส่งออกแผนแบบสอบถามโดยRecheck Cond:EXPLAIN กดไลค์ในEXPLAINผลลัพธ์ของคำถามอ้างอิง: -> Bitmap Heap Scan on table_three (cost=2446.92..19686.74 rows=8159 width=7) Recheck Cond: (("timestamp" > (now() - '30 days'::interval)) AND (client_id > 0)) -> BitmapAnd (cost=2446.92..2446.92 rows=8159 width=0) -> Bitmap Index Scan on table_one_timestamp_idx (cost=0.00..1040.00 rows=79941 width=0) Index Cond: ("timestamp" > (now() …

1
อะไรคือกายวิภาคของดัชนีคอลัมน์
หนึ่งในคุณสมบัติใหม่ในชื่อรหัส SQL Server 2012 Denaliคือดัชนี Columnstore ฉันรู้ดีเกี่ยวกับดัชนีการจัดเก็บแถวเก่าทั่วไปเช่นโครงสร้าง b-tree ความแตกต่างในการจัดเก็บระหว่างระดับลีฟและเพจ b-tree ผลกระทบของฟิลด์ที่รวมไว้การปรับให้เหมาะสมเพื่อใช้งานลำดับของคีย์เป็นต้น ฉันมีปัญหาในการรับข้อมูลที่ดีเกี่ยวกับinternalsของดัชนี columnstore มันเป็นโครงสร้างอย่างไร มีต้นไม้ b หรือไม่? มีโครงสร้างอื่น ๆ ในสถานที่? มีการจัดระเบียบข้อมูลอย่างไร ตัวดำเนินการเฉพาะประเภทใดที่เหมาะสมที่สุดที่จะใช้ มีรูปแบบการต่อต้านแบบอื่นที่ควรหลีกเลี่ยงเมื่อใช้งาน? สิ่งที่ฉันสามารถค้นหาเกี่ยวกับพวกเขานั้นเป็นสิ่งที่ตรงกันข้ามกับดัชนี "ปกติ" คือไม่มีการเรียงลำดับของคีย์ไม่มีเขตข้อมูลที่รวมไม่รวมอยู่เท่านั้น ข้อมูลเชิงลึกใด ๆ ที่ชื่นชม

4
"สร้างดัชนี" ใน MySQL เป็นการดำเนินการเชิงเส้นหรือไม่
สิ่งที่ฉันหมายถึงคือต่อไปนี้: หากสร้างดัชนีบนตารางที่มีnแถวต้องใช้tเวลา จะสร้างดัชนีในตารางเดียวกันกับ1000*nใช้เวลาประมาณ1000*tเวลา สิ่งที่ฉันพยายามทำให้สำเร็จคือการประเมินเวลาที่ใช้ในการสร้างดัชนีในฐานข้อมูลการผลิตโดยการสร้างดัชนีเดียวกันในฐานข้อมูลทดสอบขนาดเล็กมาก
20 mysql  index 

2
วิธีสร้างดัชนีเพื่อเพิ่มความเร็วการสืบค้น LIKE รวมในนิพจน์
ฉันอาจจะถามคำถามผิดในชื่อเรื่อง นี่คือข้อเท็จจริง: กลุ่มบริการลูกค้าของฉันร้องเรียนเกี่ยวกับเวลาตอบสนองที่ช้าเมื่อทำการค้นหาลูกค้าในอินเทอร์เฟซการจัดการของเว็บไซต์ Django ของเรา เรากำลังใช้ Postgres 8.4.6 ฉันเริ่มบันทึกการสืบค้นที่ช้าและค้นพบผู้ร้ายนี้: SELECT COUNT(*) FROM "auth_user" WHERE UPPER("auth_user"."email"::text) LIKE UPPER(E'%deyk%') การค้นหานี้ใช้เวลานานกว่า 32 วินาทีในการเรียกใช้ นี่คือแผนแบบสอบถามที่จัดทำโดยอธิบาย: QUERY PLAN Aggregate (cost=205171.71..205171.72 rows=1 width=0) -> Seq Scan on auth_user (cost=0.00..205166.46 rows=2096 width=0) Filter: (upper((email)::text) ~~ '%DEYK%'::text) เนื่องจากนี่เป็นแบบสอบถามที่สร้างขึ้นโดย Django ORM จาก Django QuerySet ที่สร้างโดยแอปพลิเคชัน Django Admin ฉันจึงไม่สามารถควบคุมแบบสอบถามได้ ดัชนีดูเหมือนว่าโซลูชันเชิงตรรกะ …

1
mysqldump ดัชนีการส่งออกเป็นค่าเริ่มต้นหรือไม่
ผมเล่นไปรอบ ๆ เล็ก ๆ น้อย ๆ ที่มี mysqldump และผมสงสัยว่าถ้ามันไม่ดัชนีการส่งออก ( FULLTEXT, INDEX, ... ) โดยค่าเริ่มต้น ฉันอ่านมันและฉันพบตัวเลือกนี้ : --disable-keys, -K ซึ่งแสดงว่ามันส่งออกดัชนีจริง ๆ หรือไม่ แต่ฉันไม่ต้องการที่จะเชื่อใจการตีความของฉันและฉันต้องการให้แน่ใจว่าฉันเข้าใจถูก (หรือผิด ;-)) มีใครยืนยันได้บ้าง

2
SQL INDEX - มันทำงานอย่างไร?
ความรู้เกี่ยวกับฐานข้อมูลและSQLของฉันขึ้นอยู่กับชั้นเรียนของมหาวิทยาลัยเป็นส่วนใหญ่ อย่างไรก็ตามฉันใช้เวลาสองสามเดือน (เกือบปี) ใน บริษัท ที่ฉันทำงานกับฐานข้อมูล ฉันได้อ่านหนังสือไม่กี่เล่มและผมได้มีส่วนร่วมในไม่กี่ฝึกอบรมเกี่ยวกับฐานข้อมูลเช่นMySQL, PostgreSQL, SQLite, Oracleและไม่กี่nonSQL dbวินาทีเช่นเราMongoDB, Redis, ElasticSearchฯลฯ เช่นเดียวกับที่ฉันพูดฉันเป็นคนขอทานด้วยความรู้มากมาย แต่วันนี้มีคนบอกอะไรบางอย่างกับสิ่งที่เป็นความรู้ของผู้ขอทานของฉัน ให้ฉันอธิบาย ลองใช้ฐานข้อมูลSQLและสร้างตารางง่ายๆPersonโดยมีเรคคอร์ดไม่กี่ตัวที่อยู่ภายใน: id | name | age ----------------- 1 | Alex | 24 2 | Brad | 34 3 | Chris | 29 4 | David | 28 5 | Eric | 18 6 | …
19 index 

3
มีเหตุผลในการอัปเดตสถิติด้วยตนเองหรือไม่
ใน SQL Server สถิติจะถูกอัพเดตโดยอัตโนมัติเมื่อAuto Update Statisticsอยู่ในTrue(ซึ่งเป็นค่าเริ่มต้น) มีเหตุผลในการอัปเดตสถิติด้วยตนเองและในสถานการณ์ใดบ้าง

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