คุณยังต้องการการทำดัชนีหลังจากการปรับฐานข้อมูลให้เป็นมาตรฐานหรือไม่


14

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

โดยปกติแล้วคอลัมน์ใดบ้างที่มีการจัดทำดัชนีหากคุณมีคีย์หลักและคีย์ต่างประเทศอยู่แล้ว

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


5
โดยปกติแล้วคอลัมน์ใดบ้างที่มีการจัดทำดัชนีหากคุณมีคีย์หลักและคีย์ต่างประเทศอยู่แล้ว วันที่. ชื่อ ทุกสิ่งที่คุณอาจจำเป็นต้องค้นหาหรือเรียงลำดับ
Carson63000

ดัชนีในคีย์หลักไม่นับรวมหรือไม่
CodesInChaos

คำตอบ:


34

ใช่. ในความเป็นจริงคุณดีมากอาจต้องให้ความสำคัญกับดัชนีของคุณมากขึ้น การฟื้นฟูเป็นเรื่องเกี่ยวกับการจัดเก็บข้อมูลที่ดีที่สุด ซึ่งมักจะขัดแย้งกับความเร็วในการดึงข้อมูลเนื่องจากมีการใช้การค้นหาที่ซับซ้อนมากขึ้นพร้อมการรวมที่ซับซ้อน บางครั้งผู้ที่รักษาฐานข้อมูลที่ต้องการความเร็วในการดึงข้อมูลที่รวดเร็วจะทำให้ปกติ


21
เป้าหมายของการทำให้เป็นมาตรฐานไม่ได้เป็นประสิทธิภาพในการจัดเก็บ แต่เป็นการลบการแทรกการอัพเดตและการลบการพึ่งพา อ่านเพิ่มเติม

4
ฉันเห็นด้วยกับ @MichealT ว่ามันไม่เกี่ยวกับประสิทธิภาพ ความสอดคล้องเชิงตรรกะคือสิ่งที่ฉันได้รับจากลิงก์
JeffO

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

56

ฉันคิดว่าคุณเข้าใจผิดว่าการจัดทำดัชนีสำหรับประสิทธิภาพของฐานข้อมูล

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

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

ดัชนีเป็นมุมฉากเพื่อทำให้ฐานข้อมูลเป็นมาตรฐาน


4

ใช่หลังจากการทำให้เป็นมาตรฐานคุณยังต้องมีการทำดัชนี

ตารางที่คุณกำลังทำงานมีประโยชน์เช่นเดียวกับตารางที่คุณมีก่อนการทำให้เป็นมาตรฐาน ในความเป็นจริงด้วยตัวเองพวกมันเหมือนกัน: ตาราง

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


2

ใช่.

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

มีทางเดียวเท่านั้นที่จะรู้ว่าดัชนีใดที่จะสร้าง ใช้คำสั่งทั้งหมดในโปรแกรมประยุกต์ที่หาพารามิเตอร์ตัวอย่างเช่นตัวแทนของพวกเขาและมีเครื่องมือฐานข้อมูลแสดงแผนการค้นหาของพวกเขา (ทุกเครื่องมือฐานข้อมูลมีEXPLAIN, EXPLAIN QUERY PLANหรือคำสั่งที่คล้ายกันจะเรียกว่าแตกต่างกันในเครื่องมือที่แตกต่างกัน) และการทดสอบวิธีการที่พวกเขาใช้เวลานาน มากกว่าสร้างดัชนีที่เร่งความเร็วของดัชนีที่ช้า และอย่าลืมลบดัชนีที่คุณลองอีกครั้ง แต่ไม่ได้ช่วยหลีกเลี่ยงการสูญเสียทรัพยากร


1

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

อย่างไรก็ตามทุกดัชนีจะชะลอการแทรก \ updates \ deletes ในขณะที่เร่งการเลือกดังนั้นให้เลือกดัชนีของคุณอย่างระมัดระวัง

ดัชนีมีความสำคัญต่อประสิทธิภาพที่ยอมรับได้ในฐานข้อมูล


0

สำหรับรูปแบบปกติที่สามคุณจะต้องมีดัชนีสำหรับคีย์หลักทั้งหมดอย่างแน่นอน

ไม่ว่าคุณต้องการดัชนีอื่น ๆ หรือไม่นั้นขึ้นอยู่กับการใช้ฐานข้อมูลของคุณ ตัวอย่างเช่นหากคุณค้นหาลูกค้าเป็นประจำด้วยรหัสไปรษณีย์เฉพาะมันอาจเป็นความคิดที่ดีที่จะสร้างดัชนีคอลัมน์ zip_code ในตารางลูกค้า

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