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

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

1
ความแตกต่างระหว่างการจัดทำดัชนี btree และ rtree คืออะไร?
ฉันสังเกตเห็นใน MySQLWorkbench ว่าคุณสามารถเลือกวิธีการจัดเก็บดัชนีของคุณก่อนส่งต่อการออกแบบของคุณ ประเภทการจัดเก็บคือ: bTree RTree กัญชา จากการค้นคว้านี้ฉันพบข้อมูลบางอย่างที่อยู่เหนือหัวฉันดังนั้นฉันจึงมองหาข้อมูลที่เป็นประโยชน์เกี่ยวกับความแตกต่างระหว่างสิ่งเหล่านี้และ / หรือสาเหตุที่คุณควรเลือกอย่างใดอย่างหนึ่ง นอกจากนี้ฉันไม่เคยเลือกประเภทการจัดเก็บมาก่อนดังนั้นฉันคิดว่า MySQL กำลังเลือกประเภทการจัดเก็บเริ่มต้น (BTREE?)

7
วิธีการค้นหารายการสตริง / ระเบียนที่มีขนาดใหญ่มากอย่างรวดเร็วบนฐานข้อมูล
ฉันมีปัญหาดังต่อไปนี้: ฉันมีฐานข้อมูลที่มีมากกว่า 2 ล้านบันทึก แต่ละระเบียนมีเขตข้อมูลสตริง X และฉันต้องการแสดงรายการของระเบียนที่เขตข้อมูล X ประกอบด้วยสตริงที่แน่นอน แต่ละระเบียนมีขนาดประมาณ 500 ไบต์ เพื่อให้เป็นรูปธรรมมากขึ้น: ใน GUI ของแอปพลิเคชันของฉันฉันมีช่องข้อความที่ฉันสามารถป้อนสตริงได้ ด้านบนของฟิลด์ข้อความฉันมีตารางที่แสดงเรคคอร์ด (N แรกเช่น 100) ที่ตรงกับสตริงในฟิลด์ข้อความ เมื่อฉันพิมพ์หรือลบอักขระหนึ่งตัวในฟิลด์ข้อความเนื้อหาของตารางจะต้องได้รับการอัปเดตทันที ฉันสงสัยว่ามีวิธีที่มีประสิทธิภาพในการทำเช่นนี้โดยใช้โครงสร้างดัชนีที่เหมาะสมและ / หรือแคช ตามที่อธิบายไว้ข้างต้นฉันต้องการแสดงเฉพาะรายการแรกที่ตรงกับแบบสอบถาม ดังนั้นสำหรับ N ที่มีขนาดเล็กพอก็ไม่ควรเป็นปัญหาใหญ่ในการโหลดไอเท็มที่ตรงกันจากฐานข้อมูล นอกจากนี้การแคชรายการในหน่วยความจำหลักสามารถทำให้การดึงข้อมูลเร็วขึ้น ฉันคิดว่าปัญหาหลักคือวิธีค้นหารายการที่ตรงกันอย่างรวดเร็วโดยกำหนดสตริงรูปแบบ ฉันสามารถใช้สิ่งอำนวยความสะดวกบางอย่างของ DBMS หรือฉันต้องสร้างดัชนีในหน่วยความจำด้วยตัวเองบ้างไหม? ความคิดใด ๆ แก้ไข ฉันได้ทำการทดลองครั้งแรก ฉันแบ่งระเบียนออกเป็นไฟล์ข้อความต่างๆ (ไม่เกิน 200 รายการต่อไฟล์) และวางไฟล์ในไดเรกทอรีต่าง ๆ (ฉันใช้เนื้อหาของเขตข้อมูลเดียวเพื่อกำหนดโครงสร้างไดเรกทอรี) ฉันจบด้วยไฟล์ประมาณ 50,000 ไฟล์ในไดเรกทอรีประมาณ 40000 ฉันได้เรียกใช้ …

8
การรวบรวมลำดับของฉันควรเริ่มต้นที่ดัชนี 0 หรือดัชนี 1 หรือไม่
ฉันกำลังสร้างแบบจำลองวัตถุสำหรับอุปกรณ์ที่มีหลายช่องทาง คำนามที่ใช้ระหว่างลูกค้าและฉันและChannel ChannelSet("ชุด" ไม่ถูกต้องทางความหมายเพราะเป็นชุดและชุดที่ไม่ถูกต้อง แต่นั่นเป็นปัญหาสำหรับเวลาที่แตกต่างกัน) ฉันใช้ C # นี่คือตัวอย่างการใช้งานของChannelSet: // load a 5-channel ChannelSet ChannelSet channels = ChannelSetFactory.FromFile("some_5_channel_set.json"); Console.Write(channels.Count); // -> 5 foreach (Channel channel in channels) { Console.Write(channel.Average); Console.Write(", "); } // -> 0.3, 0.3, 0.9, 0.1, 0.2 ทั้งหมดคือสำรวย อย่างไรก็ตามลูกค้าไม่ใช่โปรแกรมเมอร์และพวกเขาจะสับสนอย่างแน่นอนโดยไม่มีการทำดัชนี - ช่องแรกคือช่องที่ 1 สำหรับพวกเขา แต่เพื่อประโยชน์ของความสอดคล้องกับ C # ผมต้องการที่จะให้ChannelSetจัดทำดัชนีจากศูนย์ นี่เป็นสาเหตุที่ทำให้เกิดการเชื่อมต่อระหว่างทีม …

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

5
Quadtree พร้อมรายการที่ซ้ำกัน
ฉันกำลังใช้ควอดทรี สำหรับผู้ที่ไม่ทราบโครงสร้างข้อมูลนี้ฉันรวมถึงคำอธิบายเล็ก ๆ ต่อไปนี้: ควอดทรีที่มีโครงสร้างข้อมูลและอยู่ในระนาบแบบยุคลิดสิ่งที่ octree อยู่ในพื้นที่ 3 มิติ การใช้ควอดทรีทั่วไปคือการจัดทำดัชนีเชิงพื้นที่ เพื่อสรุปการทำงานของมัน quadtree คือชุดของรูปสี่เหลี่ยมที่นี่ด้วยความจุสูงสุดและกล่องขอบเขตเริ่มต้น เมื่อพยายามที่จะแทรกองค์ประกอบลงในควอดทรีซึ่งมีความจุมากที่สุดควอดทรีจะถูกแบ่งออกเป็น 4 ควอดทรี (การแสดงทางเรขาคณิตซึ่งจะมีพื้นที่เล็กกว่าต้นไม้สี่เท่าก่อนแทรก); แต่ละองค์ประกอบมีการกระจายใน subtrees ตามตำแหน่งของมันคือ มุมบนซ้ายถูกผูกไว้เมื่อทำงานกับสี่เหลี่ยม ดังนั้นควอดทรีเป็นทั้งใบและมีองค์ประกอบน้อยกว่าความสามารถของมันหรือต้นไม้ที่มี 4 ควอดทรีเป็นเด็ก ๆ ความกังวลของฉันคือถ้าคุณพยายามเพิ่มรายการที่ซ้ำกันอาจเป็นองค์ประกอบเดียวกันหลายครั้งหรือหลายองค์ประกอบที่มีตำแหน่งเดียวกัน quadtrees มีปัญหาพื้นฐานในการจัดการกับขอบ ตัวอย่างเช่นถ้าคุณทำงานกับควอดทรีที่มีความจุ 1 และหน่วยสี่เหลี่ยมผืนผ้าเป็นกล่องขอบเขต: [(0,0),(0,1),(1,1),(1,0)] และคุณลองแทรกสี่เหลี่ยมสองอันบนขอบเขตซ้ายบนซึ่งเป็นจุดกำเนิด: (หรือในทำนองเดียวกันถ้าคุณลองแทรก N + 1 ครั้งในควอดทรีที่มีความจุ N> 1) quadtree->insert(0.0, 0.0, 0.1, 0.1) quadtree->insert(0.0, 0.0, 0.1, 0.1) ส่วนแทรกครั้งแรกจะไม่มีปัญหา: แต่เมื่อแทรกครั้งแรกจะก่อให้เกิดการแบ่ง …

1
การจัดทำดัชนีเอกสารน้ำหนักเบาเพื่อจัดการระเบียนที่อาจเกิดขึ้นน้อยกว่า 250k
เมื่อเร็ว ๆ นี้ฉันพบว่าตัวเองกำลังสับสนกับข้อ จำกัด ของเอ็นจิ้นการจัดทำดัชนีเอกสาร ฉันกำลังพัฒนาเว็บไซต์ขนาดเล็กที่ต้องการความสามารถในการค้นหาที่มีประสิทธิภาพ แต่เนื่องจากข้อ จำกัด ด้านฮาร์ดแวร์ของพวกเขาฉันจึงไม่สามารถปรับใช้โซลูชัน Lucene-ish (เช่น Solr หรือ ElasticSearch ได้ตามปกติ) เพื่อจัดการกับความต้องการนี้ และถึงแม้ว่าในขณะที่ฉันต้องการแสดงข้อมูลที่ซับซ้อนและการคำนวณที่ใช้ฐานข้อมูลมากฉันก็ไม่จำเป็นต้องจัดการกับระเบียนที่มีศักยภาพมากกว่า 250k การปรับใช้อินสแตนซ์ Solr หรือ ES ทั้งหมดเพื่อจัดการสิ่งนี้ดูเหมือนเป็นการสิ้นเปลือง หลังจากที่ฉันคิดเกี่ยวกับมันดูเหมือนว่าปัญหาใหญ่มาก คนส่วนใหญ่จัดการข้อกำหนดการค้นหาด้วย SQL เพียงอย่างเดียว พวกเขาเรียกใช้แบบสอบถาม SQL สำหรับข้อมูลของพวกเขาและนั่นคือ ความสามารถในการค้นหาของพวกเขาก็จบลงด้วยความน่ากลัว การค้นหา wildcard แบบเต็มครอบคลุมอาจทำให้ระบบช้าลงอย่างเจ็บปวด (โดยเฉพาะโฮสต์ที่ใช้ร่วมกัน) และทำให้ฐานข้อมูลของคุณชะงักงันโดยเฉพาะอย่างยิ่งถ้าคุณมีคำถามที่ซับซ้อนและมีการเข้าร่วมจำนวนมาก คุณต้องทำหลายแบบสอบถามในคำขอเดียวจากผู้ใช้ คุณอาจได้รับสิ่งนี้ด้วยข้อความค้นหาที่ซับซ้อนมากขึ้น แต่ดูจุดก่อนหน้า โดยทั่วไปแล้วฟีเจอร์ที่ขาดอยู่ในเอ็นจิ้นข้อความแบบเต็ม ฐานข้อมูลมีปัญหาแบบเดียวกันกับที่ต้องติดตั้งเป็นเซิร์ฟเวอร์จากนั้น SQLite ก็มาพร้อมกันและทันใดนั้นเราก็สามารถปรับใช้ฐานข้อมูลที่อยู่ในตัวเองในไฟล์เดียว Googling ของฉันไม่ได้ทำอะไรเลย - สงสัยว่ามีบางอย่างที่เป็นเช่นนี้สำหรับการจัดทำดัชนี / การค้นหาข้อความแบบเต็ม ปัจจัยใดที่ควรคำนึงถึงเมื่อตัดสินใจว่าจะใช้การจัดทำดัชนีเอกสารน้ำหนักเบา …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.