ผู้ดูแลฐานข้อมูล

ถามตอบสำหรับผู้เชี่ยวชาญด้านฐานข้อมูลที่ต้องการพัฒนาทักษะฐานข้อมูลและเรียนรู้จากผู้อื่นในชุมชน

6
วิธีตรวจสอบว่าจำเป็นต้องใช้ดัชนีหรือไม่
ฉันใช้เครื่องมือดัชนีอัตโนมัติบนฐานข้อมูล MS SQL ของเรา (ฉันแก้ไขสคริปต์ที่มาจาก Microsoft ซึ่งดูที่ตารางสถิติดัชนี - ดัชนีอัตโนมัติแบบดัชนี ) จากสถิติตอนนี้ฉันมีรายการคำแนะนำสำหรับดัชนีที่ต้องการสร้าง แก้ไข: ดัชนีที่อธิบายข้างต้นนำข้อมูลจาก DMV ที่บอกให้คุณทราบว่าโปรแกรมฐานข้อมูลจะใช้อะไรสำหรับดัชนีหากมีอยู่และสคริปต์ใช้คำแนะนำ Top x (ตามการค้นหาผู้ใช้ส่งผลกระทบ ฯลฯ ) และวางลงในตาราง (แก้ไขด้านบนบางส่วนมาจากคำตอบของ Larry Coleman ด้านล่างเพื่อชี้แจงสิ่งที่สคริปต์กำลังทำอยู่) เนื่องจากฉันยังใหม่กับผู้ดูแลฐานข้อมูลและมีการค้นหาอย่างรวดเร็วทั่วเน็ตฉันลังเลที่จะกระโดดและเพิ่มดัชนีที่แนะนำอย่างสุ่มสี่สุ่มห้า อย่างไรก็ตามไม่มีประสบการณ์ในสาขานี้ฉันกำลังมองหาคำแนะนำเกี่ยวกับวิธีตรวจสอบว่าคำแนะนำนั้นจำเป็นหรือไม่ ฉันจำเป็นต้องเรียกใช้ SQL Profiler หรือไม่ควรตรวจสอบรหัสที่สืบค้นตารางหรือไม่ และคุณมีคำแนะนำอื่น ๆ อีกไหม?

11
SQL: SELECT คอลัมน์ทั้งหมดยกเว้นบางคอลัมน์
มีวิธีSELECTใดคอลัมน์ทั้งหมดในตารางยกเว้นคอลัมน์ที่เฉพาะเจาะจง มันจะสะดวกมากสำหรับการเลือกคอลัมน์ที่ไม่ใช่หยดหรือไม่ใช่รูปทรงเรขาคณิตทั้งหมดจากตาราง สิ่งที่ต้องการ: SELECT * -the_geom FROM segments; ฉันเคยได้ยินว่าฟังก์ชั่นนี้ถูกยกเว้นโดยเจตนาจากมาตรฐาน SQLเพราะการเปลี่ยนการเพิ่มคอลัมน์ลงในตารางจะเปลี่ยนผลการสืบค้น มันเป็นเรื่องจริงเหรอ? อาร์กิวเมนต์นั้นใช้ได้หรือไม่ มีวิธีแก้ปัญหาเฉพาะอย่างยิ่งใน PostgreSQL หรือไม่

6
SQL Server Management Studio 18 จะไม่เปิด (หน้าจอเริ่มต้นจะปรากฏขึ้น)
ฉันเพิ่งติดตั้ง SSMS 18 GA บนคอมพิวเตอร์ที่ติดตั้ง VS2019 เท่านั้นและเมื่อฉันพยายามเปิด SSMS หน้าจอเริ่มต้นจะปรากฏขึ้น แต่จากนั้นกระบวนการก็จะออก การรัน ssms ด้วย-logพารามิเตอร์จะแสดงข้อความแสดงข้อผิดพลาด: CreateInstance ล้มเหลวในแพ็คเกจ [Task Scheduler Package] ที่มา: 'mscorlib' คำอธิบาย: ไม่สามารถโหลดไฟล์หรือชุดประกอบ 'Microsoft.VisualStudio.Shell.Interop.8.0, เวอร์ชัน = 15.0.0.0, วัฒนธรรม = เป็นกลาง, PublicKeyToken = b03f5f7f11d50a3a' หรือหนึ่งในนั้น การพึ่งพาของมัน คำจำกัดความรายการของชุดประกอบที่อยู่ไม่ตรงกับการอ้างอิงชุดประกอบ (ข้อยกเว้นจาก HRESULT: 0x80131040) System.IO.FileLoadException: ไม่สามารถโหลดไฟล์หรือชุดประกอบ 'Microsoft.VisualStudio.Shell.Interop.8.0 เวอร์ชัน = 15.0.0.0 วัฒนธรรม = เป็นกลาง PublicKeyToken = b03f5f7f11d50a3a' …
105 sql-server  ssms  ssms-18 

5
จะเปลี่ยน MySQL innodb variable ได้อย่างไร 'innodb_log_file_size'
ดังนั้นฉันค่อนข้างใหม่ในการปรับแต่ง InnoDB ฉันค่อยๆเปลี่ยนตาราง (จำเป็น) จาก MyIsam เป็น InnoDB ฉันมี innodb ประมาณ 100MB ดังนั้นฉันจึงเพิ่มinnodb_buffer_pool_sizeตัวแปรเป็น 128MB: mysql> show variables like 'innodb_buffer%'; +-------------------------+-----------+ | Variable_name | Value | +-------------------------+-----------+ | innodb_buffer_pool_size | 134217728 | +-------------------------+-----------+ 1 row in set (0.00 sec) เมื่อฉันไปเปลี่ยนinnodb_log_file_sizeค่า (ตัวอย่าง my.cnf บนหน้าการกำหนดค่า innodb ของ mysql แสดงความคิดเห็นเพื่อเปลี่ยนขนาดไฟล์บันทึกเป็น 25% ของขนาดบัฟเฟอร์ดังนั้นตอนนี้ my.cnf ของฉันมีลักษณะเช่นนี้: …
105 mysql  innodb  myisam  logs 

4
บังคับให้ปล่อย db ขณะที่ผู้อื่นอาจเชื่อมต่อ
ฉันต้องการลบฐานข้อมูลออกจากคลัสเตอร์ PostgreSQL DB ฉันจะทำอย่างไรแม้ว่าจะมีการเชื่อมต่อที่ใช้งานอยู่? ฉันต้องการเรียงลำดับของ-forceธงที่จะลดการเชื่อมต่อทั้งหมดแล้ว DB ฉันจะใช้มันได้อย่างไร ฉันกำลังใช้งานdropdbอยู่ แต่เครื่องมืออื่นเป็นไปได้

8
ฉันจะย้ายไฟล์ฐานข้อมูล SQL Server ได้อย่างไร
ฉันมีฐานข้อมูลและต้องการย้าย.mdfและ.ldfไฟล์ไปยังตำแหน่งอื่น แต่ฉันไม่ต้องการหยุดMSSQLSERVERบริการและฉันไม่ต้องการส่งออกไปยังเซิร์ฟเวอร์อื่น ฉันจะทำสิ่งนี้ได้อย่างไร

3
ALTER TABLE - เปลี่ยนชื่อคอลัมน์
นี่คือการขับรถฉันถั่ว! ฉันต้องการเปลี่ยนชื่อคอลัมน์จาก read-more เป็น read_more ในตารางบล็อกของฉัน ฉันลองทั้งหมดนี้: ALTER TABLE blog RENAME COLUMN read-more to read_more; ALTER TABLE blog CHANGE COLUMN 'read-more' 'read_more' VARCHAR(255) NOT NULL; และฉันได้รับสิ่งนี้เสมอ! ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right …
102 mysql  mysql-5.5  mysql-5 

8
บางตัวต่อ SQL ที่มีประโยชน์จะสอน SQL ในที่ทำงานที่ไหน?
ฉันกำลังมองหาตัวต่อ SQL ระดับเริ่มต้นและระดับกลางที่ฉันสามารถชี้ผู้ฝึกหัดให้ฝึกหัดได้ ฉันรู้http://sqlzoo.net/ซึ่งเป็นแหล่งข้อมูลที่ดี - มีอะไรอีกบ้างที่คุณสามารถแนะนำได้?
100 learning 

6
เหตุใดจึงใช้ทั้ง TRUNCATE และ DROP
ในระบบฉันทำงานมีจำนวนมากของขั้นตอนการจัดเก็บและสคริปต์ SQL ที่ใช้ประโยชน์จากตารางชั่วคราว หลังจากใช้ตารางเหล่านี้แล้วก็เป็นการดีที่จะวาง เพื่อนร่วมงานของฉันหลายคน (เกือบทุกคนมีประสบการณ์มากกว่าฉัน) โดยทั่วไปแล้วทำสิ่งนี้: TRUNCATE TABLE #mytemp DROP TABLE #mytemp ฉันมักจะใช้ซิงเกิ้ลDROP TABLEในสคริปท์ของฉัน มีเหตุผลที่ดีในการทำTRUNCATEทันทีก่อนDROP?

5
คำอธิบายที่ดีเกี่ยวกับพฤติกรรมแบบเรียงซ้อน (ON DELETE / UPDATE)
ฉันไม่ได้ออกแบบสกีมาทุกวัน แต่เมื่อฉันทำฉันพยายามตั้งค่าการปรับปรุง / ลบทั้งหมดอย่างถูกต้องเพื่อให้การจัดการง่ายขึ้น ฉันเข้าใจว่าน้ำตกมีประโยชน์อย่างไร แต่ฉันจำไม่ได้ว่าตารางใดอยู่ ตัวอย่างเช่นถ้าฉันมีสองตาราง - ParentและChild- มีคีย์ต่างประเทศในChildการอ้างอิงนั้นParentและมีON DELETE CASCADEบันทึกใดที่ทำให้เกิดน้ำตกและบันทึกใดถูกลบโดยน้ำตก? การเดาครั้งแรกของฉันจะเป็นChildระเบียนที่ถูกลบเมื่อParentบันทึกถูกลบเนื่องจากChildระเบียนขึ้นอยู่กับParentระเบียน แต่สิ่งที่ON DELETEคลุมเครือนั้น มันอาจหมายถึงลบParentบันทึกเมื่อChildบันทึกถูกลบหรืออาจหมายถึงลบChildบันทึกเมื่อParentถูกลบ แล้วมันคืออะไร? ฉันหวังว่าไวยากรณ์เป็นON PARENT DELETE, CASCADE, ON FOREIGN DELETE, CASCADEหรือสิ่งที่คล้ายกันในการลบความคลุมเครือ ใครบ้างมีความจำในการจดจำสิ่งนี้?

8
SQL Server อ่านฟังก์ชัน COALESCE ทั้งหมดแม้ว่าอาร์กิวเมนต์แรกไม่ใช่ NULL หรือไม่
ฉันใช้COALESCEฟังก์ชันT-SQL โดยที่อาร์กิวเมนต์แรกจะไม่เป็นโมฆะในเวลาประมาณ 95% ของเวลาที่รัน หากอาร์กิวเมนต์แรกคืออาร์กิวเมนต์NULLที่สองนั้นเป็นกระบวนการที่ค่อนข้างยาว: SELECT COALESCE(c.FirstName ,(SELECT TOP 1 b.FirstName FROM TableA a JOIN TableB b ON .....) ) ตัวอย่างเช่นc.FirstName = 'John'ถ้า SQL Server จะยังเรียกใช้แบบสอบถามย่อยหรือไม่ ฉันรู้ว่าด้วยIIF()ฟังก์ชั่นVB.NET ถ้าอาร์กิวเมนต์ที่สองคือ True รหัสยังคงอ่านอาร์กิวเมนต์ที่สาม (แม้ว่ามันจะไม่ถูกใช้)

7
Guid vs INT - คีย์ไหนดีกว่ากัน?
ผมเคยถูกอ่านไปรอบ ๆ เหตุผลที่จะใช้หรือไม่และGuidint intมีขนาดเล็กลงเร็วขึ้นและง่ายต่อการจดจำตามลำดับเวลา และสำหรับGuidข้อได้เปรียบเดียวที่ฉันพบคือมันไม่เหมือนใคร ในกรณีGuidใดจะดีกว่าintและทำไม? จากสิ่งที่ฉันเห็นintไม่มีข้อบกพร่องยกเว้นโดยการ จำกัด จำนวนซึ่งในหลายกรณีไม่เกี่ยวข้อง ทำไมถึงถูกGuidสร้างขึ้นมา? ฉันคิดว่ามันมีจุดประสงค์อื่นนอกเหนือจากการให้บริการเป็นกุญแจหลักของตารางง่ายๆ (ตัวอย่างของแอปพลิเคชันจริงที่ใช้Guidกับบางสิ่ง) (Guid = UniqueIdentifier) ​​พิมพ์บน SQL Server

5
การจัดเก็บ vs การคำนวณค่ารวม
มีแนวทางหรือกฎง่ายๆในการพิจารณาว่าจะเก็บค่ารวมและเมื่อใดในการคำนวณพวกเขาได้ทันทีหรือไม่ ตัวอย่างเช่นสมมติว่าฉันมีวิดเจ็ตที่ผู้ใช้สามารถให้คะแนน (ดูสคีมาด้านล่าง) ทุกครั้งที่ฉันแสดงวิดเจ็ตฉันสามารถคำนวณคะแนนผู้ใช้เฉลี่ยจากRatingsตาราง อีกทางเลือกหนึ่งฉันสามารถเก็บคะแนนเฉลี่ยบนWidgetโต๊ะ สิ่งนี้จะช่วยให้ฉันไม่ต้องคำนวณการจัดอันดับทุกครั้งที่ฉันแสดงวิดเจ็ต แต่จากนั้นฉันจะต้องคำนวณคะแนนเฉลี่ยใหม่ทุกครั้งที่ผู้ใช้ให้คะแนนวิดเจ็ต Ratings Widgets --------- ------- widget_id widget_id user_id name rating avg_rating <--- The column in question

4
การเพิ่มประสิทธิภาพการสืบค้นในช่วงเวลาที่ประทับ (สองคอลัมน์)
ฉันใช้ PostgreSQL 9.1 บน Ubuntu 12.04 ฉันต้องเลือกระเบียนภายในช่วงเวลาหนึ่ง: ตารางของฉันtime_limitsมีสองtimestampฟิลด์และหนึ่งintegerคุณสมบัติ มีคอลัมน์เพิ่มเติมในตารางจริงของฉันที่ไม่เกี่ยวข้องกับแบบสอบถามนี้ create table ( start_date_time timestamp, end_date_time timestamp, id_phi integer, primary key(start_date_time, end_date_time,id_phi); ตารางนี้มีเร็กคอร์ด 2M โดยประมาณ ข้อความค้นหาต่อไปนี้ใช้เวลามหาศาล select * from time_limits as t where t.id_phi=0 and t.start_date_time <= timestamp'2010-08-08 00:00:00' and t.end_date_time >= timestamp'2010-08-08 00:05:00'; ดังนั้นฉันจึงพยายามเพิ่มดัชนีอื่น - ค่าผกผันของ PK: create index idx_inversed …

8
การจับคู่รูปแบบด้วย LIKE, SIMILAR TO หรือนิพจน์ปกติใน PostgreSQL
ฉันต้องเขียนคำถามง่ายๆที่ฉันไปหาชื่อของคนที่เริ่มต้นด้วย B หรือ D: SELECT s.name FROM spelers s WHERE s.name LIKE 'B%' OR s.name LIKE 'D%' ORDER BY 1 ฉันสงสัยว่าถ้ามีวิธีที่จะเขียนสิ่งนี้เพื่อให้มีประสิทธิภาพมากขึ้น ดังนั้นฉันสามารถหลีกเลี่ยงorและ / หรือlike?

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