คำถามติดแท็ก temp-tables

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

14
ตรวจสอบว่ามีตารางชั่วคราวและลบหากมีอยู่ก่อนสร้างตารางชั่วคราว
ฉันใช้รหัสต่อไปนี้เพื่อตรวจสอบว่ามีตารางชั่วคราวอยู่หรือไม่และวางตารางหากมีอยู่ก่อนสร้างอีกครั้ง มันทำงานได้ดีตราบใดที่ฉันไม่เปลี่ยนคอลัมน์ หากฉันเพิ่มคอลัมน์ในภายหลังมันจะให้ข้อผิดพลาดว่า "คอลัมน์ไม่ถูกต้อง" โปรดแจ้งให้เราทราบว่าฉันทำอะไรผิด IF OBJECT_ID('tempdb..#Results') IS NOT NULL DROP TABLE #Results CREATE TABLE #Results ( Company CHAR(3), StepId TINYINT, FieldId TINYINT, ) select company, stepid, fieldid from #Results --Works fine to this point IF OBJECT_ID('tempdb..#Results') IS NOT NULL DROP TABLE #Results CREATE TABLE #Results ( Company CHAR(3), StepId …

6
สร้างตารางชั่วคราวในคำสั่ง SELECT โดยไม่มี CREATE TABLE แยกต่างหาก
เป็นไปได้หรือไม่ที่จะสร้างตารางชั่วคราว (เซสชันเท่านั้น) จากคำสั่ง select โดยไม่ต้องใช้คำสั่งสร้างตารางและระบุแต่ละประเภทคอลัมน์? ฉันรู้ว่าตารางที่ได้รับมีความสามารถในเรื่องนี้ แต่มันเป็น super-temporary (statement-only) และฉันต้องการใช้ซ้ำ มันจะประหยัดเวลาถ้าฉันไม่ต้องเขียนคำสั่งสร้างตารางและทำให้รายการคอลัมน์และรายการประเภทตรงกัน

12
ความแตกต่างระหว่างโต๊ะ temp และตัวแปร table ใน SQL Server คืออะไร?
ใน SQL Server 2005 เราสามารถสร้าง temp tables หนึ่งในสองวิธี: declare @tmp table (Col1 int, Col2 int); หรือ create table #tmp (Col1 int, Col2 int); ความแตกต่างระหว่างสองสิ่งนี้คืออะไร? ฉันได้อ่านความคิดเห็นที่ขัดแย้งกันว่า @tmp ยังคงใช้ tempdb หรือไม่หรือทุกอย่างเกิดขึ้นในหน่วยความจำ ในสถานการณ์ใดที่ไม่สามารถทำได้อีก

6
เมื่อใดที่ฉันควรใช้ตัวแปรตารางเทียบกับตารางชั่วคราวในเซิร์ฟเวอร์ sql
ฉันเรียนรู้รายละเอียดเพิ่มเติมในตัวแปรตาราง มันบอกว่าตาราง temp อยู่บนดิสก์เสมอและตัวแปรของตารางอยู่ในหน่วยความจำกล่าวคือประสิทธิภาพของตัวแปรตารางดีกว่าตาราง temp เนื่องจากตัวแปรตารางใช้การดำเนินการ IO น้อยกว่าตาราง temp แต่บางครั้งถ้ามีเร็กคอร์ดมากเกินไปในตัวแปรตารางที่ไม่สามารถมีอยู่ในหน่วยความจำตัวแปรของตารางจะถูกวางลงบนดิสก์เช่นตารางอุณหภูมิ แต่ฉันไม่รู้ว่า "บันทึกมากเกินไป" คืออะไร 100,000 บันทึก หรือ 1,000,000 บันทึก ฉันจะทราบได้อย่างไรว่าตัวแปรตารางที่ฉันใช้อยู่ในหน่วยความจำหรือบนดิสก์? มีฟังก์ชั่นหรือเครื่องมือใด ๆ ใน SQL Server 2005 เพื่อวัดมาตราส่วนของตัวแปรตารางหรือแจ้งให้ฉันทราบเมื่อตัวแปรตารางถูกวางลงบนดิสก์จากหน่วยความจำ?

12
การแทรกข้อมูลลงในตารางชั่วคราว
หลังจากสร้างตารางชั่วคราวแล้วประกาศประเภทข้อมูลเช่นนั้น CREATE TABLE #TempTable( ID int, Date datetime, Name char(20)) ฉันจะแทรกข้อมูลที่เกี่ยวข้องซึ่งมีอยู่แล้วในตารางทางกายภาพภายในฐานข้อมูลได้อย่างไร


11
SQL Server: เป็นไปได้หรือไม่ที่จะแทรกลงในสองตารางในเวลาเดียวกัน?
ฐานข้อมูลของฉันมีสามตารางเรียกว่าObject_Table, และData_Table Link_Tableตารางลิงก์ประกอบด้วยสองคอลัมน์ตัวตนของวัตถุและตัวตนของบันทึกข้อมูล ฉันต้องการคัดลอกข้อมูลจากDATA_TABLEที่ซึ่งมันถูกเชื่อมโยงไปยังข้อมูลเฉพาะตัวของวัตถุที่ระบุและแทรกบันทึกที่เกี่ยวข้องลงในData_TableและLink_Tableเพื่อระบุตัวตนวัตถุที่แตกต่างกัน ฉันสามารถทำได้โดยเลือกตัวแปรตารางและการวนซ้ำผ่านการแทรกสองครั้งสำหรับการวนซ้ำแต่ละครั้ง นี่เป็นวิธีที่ดีที่สุดที่จะทำ? แก้ไข : ฉันต้องการหลีกเลี่ยงการวนซ้ำด้วยเหตุผลสองประการข้อแรกคือฉันขี้เกียจและตาราง loop / temp ต้องการรหัสเพิ่มเติมรหัสเพิ่มเติมหมายถึงสถานที่ที่จะทำผิดและเหตุผลที่สองคือความกังวลเกี่ยวกับประสิทธิภาพ ฉันสามารถคัดลอกข้อมูลทั้งหมดในส่วนแทรกเดียว แต่จะทำให้ตารางลิงก์เชื่อมโยงไปยังระเบียนข้อมูลใหม่ที่แต่ละระเบียนมีรหัสใหม่ได้อย่างไร


4
คุณสร้างตารางชั่วคราวในฐานข้อมูล Oracle ได้อย่างไร
ฉันต้องการสร้างตารางชั่วคราวในฐานข้อมูล Oracle สิ่งที่ต้องการ Declare table @table (int id) ในเซิร์ฟเวอร์ SQL แล้วเติมด้วยคำสั่งเลือก เป็นไปได้ไหม? ขอบคุณ

8
การแก้ไขข้อผิดพลาด“ ไม่สามารถเปิดตารางใหม่” ของ MySQL
ขณะนี้ฉันกำลังยุ่งอยู่กับการติดตั้งตัวกรองประเภทที่ฉันต้องสร้างส่วนคำสั่ง INNER JOIN สำหรับ "แท็ก" ทุกรายการที่จะกรอง ปัญหาคือหลังจาก SQL ทั้งชุดฉันมีตารางที่มีข้อมูลทั้งหมดที่ฉันต้องการเพื่อทำการเลือก แต่ฉันต้องการอีกครั้งสำหรับ INNER JOIN ที่สร้างขึ้นทุกครั้ง โดยทั่วไปดูเหมือนว่า: SELECT * FROM search INNER JOIN search f1 ON f1.baseID = search.baseID AND f1.condition = condition1 INNER JOIN search f2 ON f2.baseID = search.baseID AND f2.condition = condition2 ... INNER JOIN search fN ON fN.baseID = …

23
ฉันจะจำลองตัวแปรอาร์เรย์ใน MySQL ได้อย่างไร
มันปรากฏว่า MySQL ไม่ได้มีตัวแปรอาร์เรย์ ฉันควรใช้อะไรแทน? ดูเหมือนจะมีสองทางเลือกแนะนำ: เป็นชุดชนิดสเกลาร์และตารางชั่วคราว คำถามที่ฉันเชื่อมโยงเพื่อแนะนำอดีต แต่การใช้ตัวแปรเหล่านี้แทนตัวแปรอาร์เรย์เป็นวิธีปฏิบัติที่ดีหรือไม่? หรืออีกวิธีหนึ่งคือถ้าฉันไปกับชุดคำศัพท์ set-based idiom จะเทียบเท่ากับforeachอะไร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.