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

2
สร้างตารางเทียบกับเลือกเข้า
PostgreSQL รองรับCREATE TABLE ASและSELECT INTOเมื่อใดที่ฉันจะใช้ทั้งสอง CREATE TABLE AS - กำหนดตารางใหม่จากผลลัพธ์ของแบบสอบถาม CREATE TABLE ASสร้างตารางและเติมด้วยข้อมูลที่คำนวณโดยSELECTคำสั่ง คอลัมน์ตารางมีชื่อและประเภทข้อมูลที่เชื่อมโยงกับคอลัมน์ผลลัพธ์ของSELECT(ยกเว้นว่าคุณสามารถแทนที่ชื่อคอลัมน์ได้โดยให้รายชื่อคอลัมน์ใหม่ที่ชัดเจน) CREATE TABLE ASมีความคล้ายคลึงกับการสร้างมุมมอง แต่มันค่อนข้างแตกต่างกันมาก: มันสร้างตารางใหม่และประเมินแบบสอบถามเพียงครั้งเดียวเพื่อเติมตารางใหม่ในตอนแรก ตารางใหม่จะไม่ติดตามการเปลี่ยนแปลงที่ตามมาของตารางต้นฉบับของแบบสอบถาม ในทางตรงกันข้ามมุมมองประเมินSELECTคำสั่งที่กำหนดอีกครั้งเมื่อใดก็ตามที่มันถูกสอบถาม และจากนั้น SELECT INTO - กำหนดตารางใหม่จากผลลัพธ์ของแบบสอบถาม SELECT INTOสร้างตารางใหม่และเติมด้วยข้อมูลที่คำนวณโดยแบบสอบถาม SELECTข้อมูลจะไม่ได้กลับไปยังลูกค้าตามที่มีปกติ SELECTคอลัมน์ตารางใหม่มีชื่อและข้อมูลที่เกี่ยวข้องกับประเภทคอลัมน์การส่งออกของ
16 postgresql  ctas 

1
สร้างคีย์หลักอัตโนมัติใน CREATE TABLE … AS SELECT
CREATE TABLE ... AS SELECT...ฉันสร้างตารางโดยใช้ความซับซ้อนแบบสอบถามเลือกผ่าน ฉันจะเพิ่มคีย์หลักการสร้างอัตโนมัติในแบบสอบถามนี้ได้อย่างไร ตัวอย่างเช่น: create table `user_mv` select `user`.`firstname` as `firstname`, `user`.`lastname` as `lastname`, `user`.`lang` as `lang`, `user`.`name` as `user_name`, `group`.`name` as `group_name` from `user` inner join `user_groups` on (`user`.`user_id`=`user_groups`.`user_id`) left join `group` on (`group`.`group_id`=`user_groups`.`group_id`) where `user`.`lang`=`group`.`lang` แบบสอบถามนี้จะสร้างตารางที่มีfirstname, lastname, lang, username, group_nameคอลัมน์ ฉันต้องการให้มีidคอลัมน์ที่เป็นคีย์หลักของการสร้างอัตโนมัติ มีวิธีใดในการทำเช่นนี้โดยเปลี่ยนคิวรีนี้ ฉันรู้ว่าฉันสามารถทำได้โดยการเปลี่ยนตารางหลังจากดำเนินการแบบสอบถามนี้ แต่ถ้ามีวิธีใดที่จะทำสิ่งนี้โดยตรงในcreate tableคำสั่งฉันต้องการทราบวิธีการทำเช่นนั้น

2
MySQL ล็อคขณะสร้างตารางตามที่เลือก
ฉันกำลังเรียกใช้แบบสอบถาม (จำลอง) ต่อไปนี้ CREATE TABLE large_temp_table AS SELECT a.*, b.*, c.* FROM a LEFT JOIN b ON a.foo = b.foo LEFT JOIN c ON a.bar = c.bar สมมติว่าแบบสอบถามใช้เวลา 10 นาทีในการเรียกใช้ การพยายามอัปเดตค่าในตาราง a, b หรือ c ในขณะที่มันกำลังทำงานอยู่จะรอให้คิวรีด้านบนทำงานให้เสร็จก่อน ฉันต้องการหลีกเลี่ยงการล็อคนี้ (ความสอดคล้องของข้อมูลไม่เป็นที่สนใจ) ฉันจะบรรลุสิ่งนั้นได้อย่างไร การใช้: MySQL 5.1.41 และตาราง InnoDB ps ชุดแยกธุรกรรมระดับการอ่านไม่ได้รับอนุญาต; ไม่มีการเปลี่ยนแปลงในพฤติกรรม อัปเดต ในขณะที่กำลังดำเนินการค้นหาผลลัพธ์ของ SHOW …
10 mysql  locking  ctas 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.