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

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

2
ฉันจะทราบได้อย่างไรว่ามีการใช้ดัชนีเพื่อจัดเรียงใน MySQL หรือไม่
ฉันมีแบบสอบถามที่มีส่วนคำสั่ง ORDER BY ซึ่งใช้คอลัมน์ซึ่งเป็นคอลัมน์สุดท้ายของดัชนีที่ใช้ในส่วนคำสั่ง WHERE ซึ่งเป็นรูปแบบหลัก: SELECT cols FROM tables WHERE col_1 = x AND col_2 = y AND col_3 = z ORDER BY col_4 และดัชนีจะถูกสร้างในคอลัมน์ (col_1, col_2, col_3, col_4) ตามลำดับ เมื่อฉันโปรไฟล์แบบสอบถามกว่า 99% ของเวลาที่ใช้ในสถานะ "ผลการเรียงลำดับ" col_4 เป็นคอลัมน์การประทับเวลาหากสร้างความแตกต่าง ฉันเข้าใจว่า ORDER BY สามารถใช้ดัชนีภายใต้สถานการณ์บางอย่างเท่านั้น แต่ฉันยังคงประหลาดใจเล็กน้อยเมื่อต้องใช้เครื่องมือเพิ่มประสิทธิภาพ
10 mysql  index  sorting 

2
มีวิธีบังคับให้ดัชนีอยู่ในหน่วยความจำด้วย SQL Server 2008 หรือไม่?
ฉันมีตารางที่มีหลายล้านแถวซึ่งฉันต้องเรียกใช้แบบสอบถามบางครั้งบางคราว โดยทั่วไปการสืบค้นแรกจะค่อนข้างช้า (ประมาณ 10 วินาที) และการสืบค้นที่ตามมามักจะเร็วกว่า (ประมาณ 1 วินาที) หลังจากผ่านไปสองสามชั่วโมงวงจรที่ช้า / เร็วจะเริ่มขึ้นอีกครั้ง ฉันได้ตรวจสอบแผนการดำเนินการของฉันว่าดัชนีที่ต้องการทั้งหมดมีอยู่และใช้อย่างเหมาะสมและฉันถือว่าความแตกต่างของประสิทธิภาพนั้นเกิดจากข้อเท็จจริงที่ว่าดัชนีนั้นอยู่ในหน่วยความจำสำหรับการสืบค้นที่ตามมา (ฉันใช่หรือไม่ สาเหตุที่เป็นไปได้หรือไม่) ฉันยังใช้แบบสอบถามอื่น ๆ จำนวนมากโดยใช้ดัชนีเช่นกัน แต่แบบสอบถามเหล่านั้นใช้เวลาน้อยลงและประสิทธิภาพการทำงานนั้นสำคัญน้อยลงดังนั้นฉันจึงกังวลว่าดัชนีเหล่านั้นกำลังผลักดัชนีสำคัญออกจากแคชหน่วยความจำ นอกเหนือจากการแก้ไข 'เพิ่ม RAM เพิ่มเติม' ที่เห็นได้ชัดฉันยังคิดถึงการเขียนสคริปต์คิวรีเพื่อทำงานทุก ๆ ชั่วโมงเพื่อบังคับให้ดัชนีกลับมาอยู่ในหน่วยความจำ มีวิธีที่สง่างามกว่านี้หรือไม่? เช่นเดียวกับวิธีการบอกใบ้ SQLServer ว่าถ้ามันมีหน่วยความจำเพียงพอที่จะเก็บหนึ่งเดียวดัชนีแคชมันควรจะเป็นอย่างนั้น? ฉันรู้ว่าโดยปกติแล้วสิ่งที่ดีที่สุดคือการไม่ยุ่งกับ SQLServer ซึ่งเกี่ยวข้องกับสิ่งต่าง ๆ แต่ลักษณะที่ผิดปกติของข้อความค้นหาของฉัน (ทำงานน้อยมาก แต่ไม่ค่อยสำคัญเวลา) ทำให้ฉันเชื่อว่ามันสมเหตุสมผล . ฉันยังอยากรู้ว่าถ้ามีวิธีที่จะรู้ว่าดัชนีใดถูกแคชในหน่วยความจำในเวลาที่กำหนด?

2
ฉันจำเป็นต้องเพิ่มดัชนีคอลัมน์เดี่ยวใหม่ลงในตารางหรือไม่หากมีดัชนีหลายคอลัมน์ในฟิลด์นั้นอยู่แล้ว
ฉันได้ตารางที่มีหลายคอลัมน์UNIQUEดัชนีในและ_job_id____keyword_id__ ฉันจะต้องเพิ่มดัชนีอื่นหรือไม่__job_id__หากฉันมีแบบสอบถามบ่อยซึ่งดำเนินการGROUP BYในคอลัมน์นั้น (ที่ 100 ล้านแถวอาจใช้เวลาสักครู่นี่คือเหตุผลที่ฉันถามแทนที่จะทำ)
10 mysql  index 

3
ดัชนีหลายมิติในฐานข้อมูล
ฐานข้อมูลใดใช้ดัชนีหลายมิติจริง oracle เคยใช้ดัชนีหลายตัวเพื่อรับข้อมูลจากตารางหรือจะใช้ดัชนีที่ดูเหมือนจะมีการเลือกสูงสุดเสมอ วิธีการเกี่ยวกับ dbms อื่น ๆ ?
10 index 

4
ที่หนึ่งควรใส่ดัชนีในตารางมิติเวลา?
หลังจากอ่านคำถามและคำตอบจากเว็บไซต์นี้เกี่ยวกับดัชนีคำถามมาถึงใจของฉัน จะเกิดอะไรขึ้นหากใครใช้ตารางมิติเวลาที่มีระดับความละเอียดต่ำกว่าเป็นวัน ควรวางดัชนีไว้ที่ไหน? Randy Melder ในคำถาม: “ index” หมายถึงอะไรใน RDBMS กล่าวว่า : คิดว่าดัชนีเป็น "สารบัญ" ... นั่นคือรายการของตัวชี้ที่เรียงลำดับไปยังตำแหน่งในไฟล์หรือที่รู้จักกันว่าออฟเซ็ต ในกรณีของมิติเวลาที่ข้อมูลการวิจัยส่วนใหญ่อาจจะทำอย่างใดอย่างหนึ่งสำหรับวันที่ระบุในสัปดาห์เฉพาะเดือนที่เฉพาะเจาะจงหรือไตรมาสเฉพาะหากเก็บตารางเวลาทุกวันสำหรับปีที่ไม่ซ้ำกัน คำถามของฉันคือ: เราควรใส่ดัชนีสำหรับฟิลด์เหล่านั้นทั้งหมดหรือไม่ วันนี้เป็นวันที่ไม่เหมือนใครดังนั้นสำหรับฉันฉันเข้าใจการใช้ดัชนีอย่างสมบูรณ์แบบ แต่รหัสประจำสัปดาห์จะมี7 ครั้งรหัสเดือนจะมี30/31 ครั้งและรหัสไตรมาสจะมี120 ครั้งขึ้นไป เราควรใส่ดัชนีสำหรับฟิลด์เหล่านั้นหรือไม่ มันจะยังคงมีประโยชน์หรือไม่ ฉันถามคุณว่าเพราะในคำถามเดียวกัน David Spillett ตอบว่า: การเพิ่มดัชนีมากเกินไปอาจเป็นการเพิ่มประสิทธิภาพที่ไม่ดีแน่นอนเนื่องจากพื้นที่พิเศษที่ใช้ในการจัดเก็บดัชนี (และโหลด IO เพื่อรักษาไว้หากฐานข้อมูลของคุณเห็นการดำเนินการเขียนจำนวนมาก) อาจเป็นปัญหาที่แย่กว่าแบบสอบถามแบบสอบถามที่อ่านน้อยที่สุด ดังนั้นอย่าทำมากเกินไป ดังนั้นสิ่งที่จะเป็นข้อควรพิจารณาที่ดีที่สุดสำหรับมิติเวลา?

2
SQL 2005: เราสามารถกำหนดงานบำรุงรักษาดัชนีการสร้างใหม่ที่สามารถขยายขนาดไฟล์บันทึกฐานข้อมูลได้หรือไม่?
บน SQL Server 2005 ถ้าฐานข้อมูลทั้งหมดอยู่ในโหมดเต็มรูปแบบ (ที่มีการสำรองข้อมูลบันทึกธุรกรรมรายชั่วโมง) เป็นไปได้หรือไม่ที่จะตรวจสอบว่าการสร้างดัชนีทั้งหมดของฐานข้อมูลใหม่สามารถสร้างล็อกไฟล์ของฐานข้อมูลได้หรือไม่ และสามารถเติบโตได้เท่าไหร่ หากไม่มีคำตอบที่ตรงแล้วทิศทางใด ๆ จะได้รับการชื่นชมจริงๆ ขอบคุณล่วงหน้า.

2
ทำไมคาสซานดราแนะนำให้สร้างดัชนีในคอลัมน์ที่มีภาวะหัวใจเต้นสูง?
เอกสารประกอบของ Cassandra อย่าใช้ดัชนีในสถานการณ์เหล่านี้: ในคอลัมน์ที่มีความสำคัญสูงเพราะคุณจะต้องค้นหาระเบียนจำนวนมากเพื่อผลลัพธ์จำนวนเล็กน้อย ดูปัญหาในการใช้ดัชนีคอลัมน์ความสำคัญสูงด้านล่าง มันเกิดขึ้น หากคุณสร้างดัชนีในคอลัมน์ความสำคัญสูงซึ่งมีค่าแตกต่างกันจำนวนมากแบบสอบถามระหว่างเขตข้อมูลจะต้องเสียค่าการค้นหาจำนวนมากสำหรับผลลัพธ์ที่น้อยมาก ในตารางที่มีเพลงนับพันล้านเพลงการค้นหาเพลงโดยนักเขียน (ค่าที่มักไม่ซ้ำกันสำหรับแต่ละเพลง) แทนที่จะเป็นศิลปินของพวกเขามีแนวโน้มที่จะไม่มีประสิทธิภาพมาก มันอาจจะมีประสิทธิภาพมากกว่าในการรักษาตารางด้วยตนเองเป็นรูปแบบของดัชนีแทนที่จะใช้ดัชนีในตัวของ Cassandra สำหรับคอลัมน์ที่มีข้อมูลที่ไม่ซ้ำกันบางครั้งประสิทธิภาพที่ดีในการใช้ดัชนีเพื่อความสะดวกตราบใดที่ปริมาณการสืบค้นไปยังตารางที่มีคอลัมน์ที่จัดทำดัชนีอยู่ในระดับปานกลางและไม่อยู่ภายใต้ภาระคงที่ แต่ไม่เคยตอบคำถามจริงๆ: ทำไมมันไม่มีประสิทธิภาพ? ฉันไม่รู้ว่า "การบำรุงรักษาตารางด้วยตนเองในรูปแบบของดัชนี" หมายความว่าอย่างไร แต่แล้วมันค่อนข้างขัดแย้งกับตัวเองด้วย "... บางครั้งก็เป็นการดีที่ควรใช้ดัชนีเพื่อความสะดวกตราบเท่าที่ปริมาณการสืบค้นอยู่ในระดับปานกลาง ... " นี่เป็นเพียงการพยายามบอกให้ฉันใช้ PK เมื่อไรและที่ไหนที่ฉันจะทำได้? ความไร้ประสิทธิภาพคืออะไร ความเข้าใจของฉันคือว่าแบบสอบถามที่จะตีดัชนีจะต้องค้นหาทุกโหนดในคลัสเตอร์และจากนั้นแต่ละโหนดจะทำการค้นหาในดัชนีท้องถิ่นของตนและผลลัพธ์จะได้รับการรวบรวม สิ่งนี้ไม่จำเป็นต้องมีราคาแพง (การค้นหาดัชนีแต่ละรายการควรมีราคาถูกพอสมควร) ยกเว้นว่าเราจ่ายเป็นเวลาแฝงของเครือข่ายเนื่องจากเราต้องรอโหนดที่ช้าที่สุดของล็อต ฉันไม่มีอะไรที่นี่หรือ แต่ถ้าฉันมีคอลเล็กชั่นที่มีสิ่งของมูลค่ามากถึงพันล้าน - ในโอกาสที่หายาก - ต้องได้รับการค้นหาโดยคุณลักษณะที่แตกต่าง แต่ไม่เหมือนใคร ... นี่เป็นการใช้ที่เหมาะสมใช่ไหม? ¹Every? IDK ถ้าการจำลองแบบหมายความว่าสิ่งนี้สามารถเข้าถึง 1/3 ของคลัสเตอร์สำหรับปัจจัยการจำลองที่ 3 หรือไม่?
10 index  cassandra 

1
วิธีใช้ดัชนีเพื่อเพิ่มความเร็วในการเรียงลำดับใน postgres
ฉันใช้ postgres 9.4 The messagesมีสคีมาดังต่อไปนี้: ข้อความเป็นของ feed_id และโพสต์ _at และข้อความสามารถมีข้อความหลัก (ในกรณีที่ตอบกลับ) Table "public.messages" Column | Type | Modifiers ------------------------------+-----------------------------+----------- message_id | character varying(255) | not null feed_id | integer | parent_id | character varying(255) | posted_at | timestamp without time zone | share_count | integer | Indexes: "messages_pkey" PRIMARY KEY, …

2
ฉันควรสร้างดัชนีใหม่หลังจากตัดทอน / แทรกขนาดใหญ่หรือไม่
ฉันมีขั้นตอนการจัดเก็บที่ตัดทอนบางตารางที่มีแถวประมาณ 1.75M ในแต่ละแถวก่อนที่จะแทรกข้อมูลใหม่ (ขึ้นอยู่กับข้อมูลในตารางอื่น ๆ การคำนวณ ฯลฯ ) โครงร่างพื้นฐานง่ายมาก: ตัดทอนตาราง แทรก 1.75M แถวใน 'batches' ประมาณ 75,000 ต่อเวลา ฉันสงสัยว่าฉันควรสร้างดัชนีใหม่อีกครั้งอย่างชัดเจนตลอดเวลาในกระบวนการนี้หรือไม่? เช่น ตัดทอนตาราง ALTER INDEX ALL ON xxx REBUILD WITH (FILLFACTOR=90) [หรืออะไรที่คล้ายกัน] แทรกแถว 1.75M หรือบางที ALTER INDEX ALL ON xxx DISABLE ตัดทอนตาราง แทรกแถว 1.75M ALTER INDEX ALL ON xxx REBUILD WITH (FILLFACTOR=90) [หรืออะไรที่คล้ายกัน] …

4
ฉันจะแยกส่วนดัชนีเซิร์ฟเวอร์ SQL โดยเจตนาได้อย่างไร
ฉันต้องการสร้างเงื่อนไขดัชนีที่ไม่ดีอย่างตั้งใจบนฐานข้อมูลการทดสอบ SQL Server 2017 ที่ฉันมีเพื่อทำความเข้าใจสคริปต์การบำรุงรักษาเหล่านี้ให้ดีขึ้นหรือไม่ ดัชนีเซิร์ฟเวอร์ SQL และการบำรุงรักษาสถิติ มีวิธีที่รวดเร็ว / อัตโนมัติในการลดความสมบูรณ์ของดัชนีหรือเพิ่มการกระจายตัวของดัชนี? คุณรู้หรือไม่ว่าทรัพยากรที่มีประโยชน์ใด ๆ ที่ฉันสามารถทำได้เพื่อบรรลุเป้าหมายนี้?

1
ไม่มีดัชนีที่ไม่ได้ทำคลัสเตอร์เป็นส่วนหนึ่งของดัชนีที่ทำคลัสเตอร์แล้ว
ฉันกำลังดีบักเคียวรีที่รันช้าและในแผนการดำเนินการขอแนะนำให้ใช้ดัชนีที่ไม่ใช่คลัสเตอร์โดยมีผลกระทบ 51.6648 อย่างไรก็ตามดัชนีที่ไม่ทำคลัสเตอร์จะมีเฉพาะคอลัมน์ที่อยู่ในดัชนีคอมโพสิตคีย์หลัก (PK) แล้วเท่านั้น อาจเป็นเพราะลำดับของคอลัมน์ในดัชนีหรือไม่ เช่นถ้าคอลัมน์ในดัชนีคลัสเตอร์ไม่เรียงลำดับจากส่วนใหญ่ถึงน้อยที่สุดแล้วมีความเป็นไปได้ที่จะมีดัชนีที่ไม่รวมกลุ่มเพื่อปรับปรุงประสิทธิภาพหรือไม่ นอกจากนี้ดัชนีที่ไม่ทำคลัสเตอร์จะมีคอลัมน์ PK สองในสามเท่านั้นโดยที่คอลัมน์ที่สามนั้นถูกเพิ่มเป็นคอลัมน์ที่รวมไว้ เป็นincludeอีกสาเหตุหนึ่งที่ทำไมการใช้ดัชนีที่ไม่ทำคลัสเตอร์อาจจะดีที่สุด? ด้านล่างเป็นตัวอย่างของโครงสร้างตารางที่ฉันทำงานด้วย: Tables- Retailers ( RetailerID int PK, name ...) Retailer_Relation_Types ( RelationType smallint PK, Description nvarchar(50) ...) Retailer_Relations ( RetailerID int PK FK, RelatedRetailerID int PK FK, RelationType smallint PK FK, CreatedOn datetime ...) ตารางRetailer_Relationsมีดัชนีคอมโพสิต PK ต่อไปนี้และดัชนีแนะนำ CONSTRAINT PK_Retailer_Relations …

3
ดัชนีที่ไม่ทำคลัสเตอร์รับประกันเกี่ยวกับลำดับแถวหรือไม่?
ฉันมีนักพัฒนาที่ต้องการเมื่อทำคำสั่งเลือกโดยไม่มีคำสั่งโดยแถวในตารางจะอยู่ในลำดับที่พวกเขาถูกแทรก ผู้พัฒนาแนะนำให้เปลี่ยนจากดัชนีเป็นคลัสเตอร์ที่ไม่ใช่คลัสเตอร์ ด้วยการเปลี่ยนดัชนีจากคลัสเตอร์เป็นไม่ใช่คลัสเตอร์สิ่งนี้ทำให้การรับประกันใด ๆ เกี่ยวกับลำดับของแถวที่จะปรากฏในตารางหรือไม่? คำถามนี้ส่วนใหญ่สำหรับความอยากรู้ของฉัน; ฉันจะแนะนำให้ใช้คอลัมน์ข้อมูลประจำตัวแทน แต่คำขอนี้ทำให้ฉันคิด สามารถใช้การประทับเวลา แต่มีแถวโอกาสที่สามารถแทรกพร้อมกันได้ ขอบคุณล่วงหน้าสำหรับความช่วยเหลือของ.

1
COALESCE ไม่สามารถระบุได้ในตอนนี้
หนึ่งในนักพัฒนาของฉันกำลังโต้เถียงกันว่าCOALESCE(column, default value) = default valueตอนนี้ขายได้แล้ว นั่นถูกต้องใช่ไหม? ฉันรันการทดสอบต่อไปนี้แล้วและคิดว่าเป็นนัยที่COALESCEไม่สามารถโต้แย้งได้ USE tempdb; SELECT @@VERSION; -- Microsoft SQL Server 2016 (RTM-CU3-GDR) (KB3194717) - 13.0.2186.6 (X64) Oct 31 2016 18:27:32 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows 10 Pro 6.3 <X64> (Build 14393: ) (Hypervisor) CREATE TABLE Test ( ID int primary …

2
กำหนดลำดับการจัดเรียงคีย์ jsonb ที่เกี่ยวข้องกับอาร์เรย์
ฉันมีตารางใน PostgreSQL พร้อมข้อมูลบางส่วน: create table t2 ( key jsonb, value jsonb ); INSERT INTO t2(key, value) VALUES ('1', '"test 1"') ,('2', '"test 2"') ,('3', '"test 3"') ,('[]', '"test 4"') ,('[1]', '"test 5"') ,('[2]', '"test 6"') ,('[3]', '"test 7"') ,('[1, 2]', '"test 8"') ,('[1, 2, 3]', '"test 9"') ,('[1, 3]', '"test …

3
แผนการดำเนินการไม่ได้ใช้ INDEX แต่ใช้การสแกนตาราง
ฉันรู้ว่าเมื่อใช้ดัชนีหรือการสแกนตาราง SQL Server จะใช้สถิติเพื่อดูว่าอันไหนดีกว่า ฉันมีตารางที่มี 20 ล้านแถว ฉันมีดัชนีใน (SnapshotKey, การวัด) และแบบสอบถามนี้: select Measure, SnapshotKey, MeasureBand from t1 where Measure = 'FinanceFICOScore' group by Measure, SnapshotKey, MeasureBand แบบสอบถามส่งคืนแถว 500k ดังนั้นแบบสอบถามจึงเลือกเพียง 2.5% ของแถวของตาราง คำถามคือทำไม SQL Server ไม่ใช้ดัชนี nonclustered ฉันมีและใช้การสแกนตารางแทน? มีการอัพเดทสถิติ ดีที่จะพูดถึงว่าประสิทธิภาพของแบบสอบถามนั้นดี สแกนตาราง ดัชนีบังคับ โครงสร้างตาราง / ดัชนี CREATE TABLE [t1]( [SnapshotKey] [int] NOT …

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