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

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

2
ทำความเข้าใจกับ“ การสแกนบิตแมปฮีป” และ“ การสแกนดัชนีบิตแมป”
ฉันจะพยายามอธิบายความเข้าใจที่คลาดเคลื่อนของฉันตามตัวอย่างต่อไปนี้ ผมไม่เข้าใจปัจจัยพื้นฐานBitmap Heap Scan Nodeของ พิจารณาแบบสอบถามSELECT customerid, username FROM customers WHERE customerid < 1000 AND username <'user100';ซึ่งเป็นแผนนี้: Bitmap Heap Scan on customers (cost=25.76..61.62 rows=10 width=13) (actual time=0.077..0.077 rows=2 loops=1) Recheck Cond: (((username)::text < 'user100'::text) AND (customerid < 1000)) -> BitmapAnd (cost=25.76..25.76 rows=10 width=0) (actual time=0.073..0.073 rows=0 loops=1) -> Bitmap Index …
36 postgresql  index 

4
การติดตามความคืบหน้าของการสร้างดัชนีใน PostgreSQL
มีวิธีการติดตามความคืบหน้าของการสร้างดัชนีใน PostgreSQL หรือไม่ ฉันกำลังสร้างดัชนีบนโต๊ะขนาดใหญ่และฉันต้องการที่จะดูว่าสิ่งนี้เกิดขึ้นเร็วแค่ไหน มีวิธีตรวจสอบเรื่องนี้หรือไม่?
36 postgresql  index 

3
ชนิดข้อมูลที่เหมาะสมที่สุดสำหรับเขตข้อมูล MD5 คืออะไร
เรากำลังออกแบบระบบที่รู้กันว่าอ่านยาก (ตามคำสั่งของการอ่านหมื่นครั้งต่อนาที) มีตารางnamesที่ทำหน้าที่จัดเรียงรีจิสทรีกลาง แต่ละแถวมีtextเขตข้อมูลrepresentationและไม่ซ้ำกันkeyซึ่งเป็นแฮช MD5 ของสิ่งrepresentationนั้น 1ตารางนี้มีระเบียนหลายสิบล้านระเบียนและคาดว่าจะเติบโตเป็นพันล้านตลอดอายุการใช้งานแอปพลิเคชัน มีตารางอื่น ๆ อีกหลายสิบตาราง (ของสคีมาที่แตกต่างกันอย่างมากและจำนวนเรคคอร์ด) ที่อ้างอิงถึงnamesตาราง ระเบียนใดก็ตามที่ระบุในตารางใดตารางหนึ่งเหล่านี้รับประกันว่าจะมี a name_keyซึ่งเป็น foreign key ไปยังnamesตาราง 1: อนึ่งตามที่คุณคาดไว้ระเบียนในตารางนี้จะไม่เปลี่ยนรูปเมื่อมีการเขียน สำหรับตารางใดก็ตามที่ไม่ใช่namesตารางแบบสอบถามที่พบบ่อยที่สุดจะเป็นไปตามรูปแบบนี้: SELECT list, of, fields FROM table WHERE name_key IN (md5a, md5b, md5c...); ฉันต้องการปรับให้เหมาะสมสำหรับการอ่าน ฉันสงสัยว่าจุดแรกของฉันควรจะลดขนาดของดัชนี (แม้ว่าฉันจะไม่ได้รับการพิสูจน์ว่าผิด) คำถาม: อะไรคือ / ชนิดข้อมูลที่ดีที่สุดสำหรับkeyและname_keyคอลัมน์คืออะไร? มีเหตุผลที่จะใช้hex(32)มากกว่าbit(128)? BTREEหรือGIN?

4
ทำไม MySQL ไม่มีแฮชดัชนีใน MyISAM หรือ InnoDB
ฉันมีแอพพลิเคชั่นที่จะเลือกใช้ความเท่าเทียมกันเท่านั้นและฉันคิดว่าฉันควรใช้ดัชนีแฮชเหนือดัชนี btree MyISAM หรือ InnoDB ไม่รองรับดัชนีแฮชของฉัน เกิดอะไรขึ้นกับสิ่งนั้น
35 mysql  index  innodb  myisam 

2
เรียงตามคอลัมน์ควรมีดัชนีหรือไม่
ฉันได้เพิ่มดัชนีในตารางซึ่งใช้สำหรับผลการค้นหา ฉันกำลังแสดงผลลัพธ์ตามลำดับ ASC หรือ DESC ดังนั้นคอลัมน์นั้นควรมีดัชนีหรือไม่? ฉันมีอีก 2 ดัชนีในตารางนั้น ประสิทธิภาพจะมีผลต่อการสร้างดัชนีหรือไม่สร้างดัชนีในคอลัมน์นั้น

2
ดัชนีไม่ทำให้การดำเนินการเร็วขึ้นและในบางกรณีทำให้การสืบค้นช้าลง ทำไมถึงเป็นเช่นนั้น?
ฉันกำลังทดลองกับดัชนีเพื่อเร่งความเร็วของสิ่งต่าง ๆ แต่ในกรณีของการเข้าร่วมดัชนีจะไม่ปรับปรุงเวลาดำเนินการแบบสอบถามและในบางกรณีจะทำให้สิ่งต่าง ๆ ช้าลง แบบสอบถามเพื่อสร้างตารางทดสอบและกรอกข้อมูลคือ: CREATE TABLE [dbo].[IndexTestTable]( [id] [int] IDENTITY(1,1) PRIMARY KEY, [Name] [nvarchar](20) NULL, [val1] [bigint] NULL, [val2] [bigint] NULL) DECLARE @counter INT; SET @counter = 1; WHILE @counter < 500000 BEGIN INSERT INTO IndexTestTable ( -- id -- this column value is auto-generated NAME, val1, val2 …
34 sql-server  index 

7
คัดลอกโครงสร้างที่สมบูรณ์ของตาราง
ใช้วิธีการบางอย่างเมื่อคุณสร้างสำเนาของตารางที่คุณสูญเสียดัชนี, PK, FK เป็นต้นตัวอย่างเช่นใน SQL Server ฉันสามารถพูดได้: select * into dbo.table2 from dbo.table1; นี่เป็นเพียงสำเนาอย่างง่ายของตาราง ดัชนี / ข้อ จำกัด ทั้งหมดหายไป ฉันจะคัดลอกโครงสร้างตาราง (โดยไม่ใช้การสำรองข้อมูล) ได้อย่างไร ฉันกำลังมองหาที่จะทำด้วยตนเองเป็นหลัก แต่ถ้าเป็นไปไม่ได้ที่ฉันจะยอมรับวิธีการแก้ปัญหาใด ๆ

6
ทำไมฐานข้อมูลไม่สร้างดัชนีของตนเองโดยอัตโนมัติ
ฉันคิดว่าฐานข้อมูลจะรู้มากพอเกี่ยวกับสิ่งที่พวกเขาพบบ่อยและสามารถตอบสนองต่อความต้องการที่อยู่ภายใต้การที่พวกเขาสามารถตัดสินใจที่จะเพิ่มดัชนีลงในข้อมูลที่มีการร้องขอสูง
32 index  rdbms 

3
มันเป็นความคิดที่ดี / วิธีการจัดทำดัชนีคอลัมน์ VARCHAR?
เรากำลังใช้ PostgreSQL v8.2.3 มีตารางที่เกี่ยวข้อง: พนักงานและEMAILLIST Table 1: EMPLOYEE (column1, column2, email1, email2, column5, column6) Table 2: EMAILLIST (email) มีการรวม 2 ตารางเข้าด้วยกันซึ่งหาก EMPLOYEE.EMAIL1 หรือ EMPLOYEE.EMAIL2 ไม่ได้เข้าคู่กันแถวเหล่านั้นจะถูกส่งกลับ SELECT employee.email1, employee.email2, e1.email IS NOT NULL AS email1_matched, e2.email IS NOT NULL AS email2_matched FROM employee LEFT JOIN emaillist e1 ON e1.email = employee.email1 …

2
ดัชนีหลายคอลัมน์และประสิทธิภาพ
ฉันมีตารางที่มีดัชนีหลายคอลัมน์และฉันมีข้อสงสัยเกี่ยวกับการเรียงลำดับที่เหมาะสมของดัชนีเพื่อให้ได้ประสิทธิภาพสูงสุดในการสืบค้น สถานการณ์: PostgreSQL 8.4 ตารางที่มีประมาณหนึ่งล้านแถว ค่าในคอลัมน์c1สามารถมีประมาณ100 ค่าที่แตกต่างกัน เราสามารถสันนิษฐานได้ว่าค่ามีการกระจายอย่างเท่าเทียมกันดังนั้นเราจึงมีประมาณ 10,000 แถวสำหรับทุกค่าที่เป็นไปได้ คอลัมน์c2สามารถมี1,000 ค่าที่แตกต่าง เรามี 1,000 แถวสำหรับทุกค่าที่เป็นไปได้ เมื่อค้นหาข้อมูลเงื่อนไขจะมีค่าสำหรับคอลัมน์สองคอลัมน์เหล่านี้เสมอดังนั้นตารางจะมีดัชนีหลายคอลัมน์ซึ่งรวม c1 และ c2 ฉันได้อ่านเกี่ยวกับความสำคัญของการจัดเรียงคอลัมน์ในดัชนีหลายคอลัมน์อย่างถูกต้องหากคุณมีข้อความค้นหาที่ใช้เพียงคอลัมน์เดียวในการกรอง นี่ไม่ใช่กรณีในสถานการณ์ของเรา คำถามของฉันคือคำถามนี้: จากข้อเท็จจริงที่ว่าหนึ่งในตัวกรองเลือกชุดข้อมูลที่เล็กกว่ามากฉันจะปรับปรุงประสิทธิภาพได้ไหมถ้าดัชนีตัวแรกเป็นตัวเลือกที่เลือกได้มากที่สุด ฉันไม่เคยพิจารณาคำถามนี้จนกระทั่งเห็นกราฟิกจากบทความที่อ้างอิง: ภาพที่นำมาจากบทความที่อ้างอิงเกี่ยวกับดัชนีหลายคอลัมน์ แบบสอบถามใช้ค่าจากสองคอลัมน์ในการกรอง ฉันไม่มีข้อความค้นหาที่ใช้เพียงหนึ่งคอลัมน์ในการกรอง พวกเขาทั้งหมดคือ: WHERE c1=@ParameterA AND c2=@ParameterB. นอกจากนี้ยังมีเงื่อนไขเช่นนี้:WHERE c1 = "abc" AND c2 LIKE "ab%"

1
ต้องการดัชนีสำหรับคีย์ต่างประเทศ
ฉันกำลังดิ้นรนกับดัชนีคีย์หลักและคีย์ต่างประเทศ ... และความต้องการของพวกเขาทั้งหมด ถ้าฉันมีสองตารางทั้งสองจะมีจำนวนเต็มเป็นคีย์หลัก ตารางแรกอ้างอิงผ่าน FK ไปยังคีย์หลักของตารางที่สอง ในตารางทั้งสองฉันมีดัชนีคีย์หลักในคอลัมน์ ID ฉันสร้างข้อ จำกัด FK ในการtable1.ref_fieldอ้างอิง PK ของตารางที่สอง ( table2.id) และฉันเพิ่มดัชนีบน table1.ref_field นี่เป็นวิธีที่ดีที่สุดในการจัดระเบียบดัชนีคีย์หลักและคีย์ต่างประเทศหรือไม่

1
การค้นหาดัชนีจะเร็วขึ้นอย่างเห็นได้ชัดด้วย char vs varchar หรือไม่เมื่อค่าทั้งหมดเป็น 36 ตัวอักษร
ฉันมีแบบแผนดั้งเดิม (ข้อจำกัดความรับผิดชอบ!) ที่ใช้รหัสที่สร้างโดยใช้แฮชสำหรับคีย์หลักสำหรับตารางทั้งหมด (มีจำนวนมาก) ตัวอย่างของ ID ดังกล่าวคือ: 922475bb-ad93-43ee-9487-d2671b886479 ไม่มีความหวังที่เป็นไปได้ในการเปลี่ยนวิธีการนี้อย่างไรก็ตามประสิทธิภาพของการเข้าถึงดัชนีนั้นไม่ดี การตั้งค่ากันมากมายเหตุผลนี้อาจจะมีสิ่งหนึ่งที่ผมสังเกตเห็นว่าดูเหมือนน้อยกว่าที่ดีที่สุด - แม้จะมีค่า ID ทั้งหมดในตารางมากทั้งหมดเป็นว่า 36 ตัวอักษรความยาวชนิดคอลัมน์varchar(36), ไม่ char(36) การเปลี่ยนประเภทคอลัมน์เป็นความยาวคงที่จะchar(36)ให้ประโยชน์ด้านดัชนีอย่างมีนัยสำคัญหรือไม่นอกเหนือจากการเพิ่มจำนวนรายการต่อหน้าดัชนีเป็นต้น? คือ postgres ทำงานเร็วกว่ามากเมื่อจัดการกับประเภทความยาวคงที่มากกว่าประเภทความยาวผันแปรหรือไม่ โปรดอย่าพูดถึงการประหยัดพื้นที่เก็บข้อมูลขนาดจิ๋ว - ไม่เป็นไรเมื่อเทียบกับการผ่าตัดที่จำเป็นในการเปลี่ยนแปลงคอลัมน์

2
ปรับแต่งแบบสอบถาม Postgres ด้วย IN ขนาดใหญ่
ข้อความค้นหานี้รับรายการโพสต์ที่สร้างโดยคนที่คุณติดตาม คุณสามารถติดตามคนได้ไม่ จำกัด จำนวน แต่คนส่วนใหญ่ติดตามน้อยกว่า 1,000 คน ด้วยการสืบค้นแบบนี้การเพิ่มประสิทธิภาพที่เห็นได้ชัดคือการแคช"Post"รหัส แต่น่าเสียดายที่ฉันไม่มีเวลาสำหรับตอนนี้ EXPLAIN ANALYZE SELECT "Post"."id", "Post"."actionId", "Post"."commentCount", ... FROM "Posts" AS "Post" INNER JOIN "Users" AS "user" ON "Post"."userId" = "user"."id" LEFT OUTER JOIN "ActivityLogs" AS "activityLog" ON "Post"."activityLogId" = "activityLog"."id" LEFT OUTER JOIN "WeightLogs" AS "weightLog" ON "Post"."weightLogId" = "weightLog"."id" LEFT …

3
ทำไมดัชนี REBUILD ไม่ลดการแยกส่วนดัชนี?
ฉันใช้ ALTER INDEX REBUILD เพื่อลบการแตกแฟรกเมนต์ดัชนี ในบางกรณี REBUILD ดูเหมือนจะไม่ลบการกระจายตัวของนี้ อะไรคือสาเหตุที่ REBUILD ไม่ลบการแยกส่วน? ดูเหมือนว่าสิ่งนี้จะเกิดขึ้นโดยเฉพาะกับดัชนีขนาดเล็ก

4
ดัชนีเชิงพื้นที่สามารถช่วยแบบสอบถามแบบ "ช่วง - เรียงตาม - ขีด จำกัด "
ถามคำถามนี้โดยเฉพาะสำหรับ Postgres เนื่องจากมี supoort ที่ดีสำหรับดัชนี R-tree / spatial เรามีตารางต่อไปนี้พร้อมโครงสร้างแบบต้นไม้ (ชุดแบบซ้อน) ของคำและความถี่: lexikon ------- _id integer PRIMARY KEY word text frequency integer lset integer UNIQUE KEY rset integer UNIQUE KEY และแบบสอบถาม: SELECT word FROM lexikon WHERE lset BETWEEN @Low AND @High ORDER BY frequency DESC LIMIT @N ฉันคิดว่าดัชนีการครอบคลุม(lset, frequency, word)จะมีประโยชน์ แต่ฉันรู้สึกว่ามันอาจทำงานได้ไม่ดีหากมีlsetค่ามากเกินไปใน(@High, …

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