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

PostgreSQL ทุกรุ่น เพิ่มแท็กเฉพาะรุ่นเพิ่มเติมเช่น postgresql-11 หากบริบทนั้นสำคัญ

3
ดัชนีคอมโพสิตยังดีสำหรับการค้นหาในเขตข้อมูลแรกหรือไม่
สมมติว่าผมมีตารางที่มีสาขาและA Bฉันจะทำให้คำสั่งปกติA+ ดังนั้นฉันสร้างดัชนีคอมโพสิตในB (A,B)คำสั่งในการค้นหาAจะได้รับการปรับให้เหมาะสมอย่างเต็มที่โดยดัชนีคอมโพสิตหรือไม่ นอกจากนี้ผมสร้างดัชนีในAแต่ Postgres Aยังคงใช้ดัชนีคอมโพสิตสำหรับการค้นหาเท่านั้น หากคำตอบก่อนหน้าเป็นบวกฉันคิดว่ามันไม่สำคัญ แต่ทำไมมันถึงเลือกดัชนีคอมโพสิตตามค่าเริ่มต้นหากมีAดัชนีเดียว

6
ขั้นตอนการจัดเก็บป้องกันการฉีด SQL หรือไม่
เป็นความจริงหรือไม่ที่ขั้นตอนการจัดเก็บป้องกันการโจมตี SQL injection กับฐานข้อมูล PostgreSQL ฉันทำวิจัยเล็กน้อยและพบว่า SQL Server, Oracle และ MySQL ไม่ปลอดภัยต่อการฉีด SQL แม้ว่าเราจะใช้ขั้นตอนการจัดเก็บเท่านั้น อย่างไรก็ตามปัญหานี้ไม่มีอยู่ใน PostgreSQL การใช้โพรซีเดอร์ที่เก็บไว้ในแกน PostgreSQL ป้องกันการโจมตีจากการฉีด SQL หรือเป็นอย่างอื่นหรือไม่? หรือ PostgreSQL มีความอ่อนไหวต่อการฉีด SQL แม้ว่าเราจะใช้ขั้นตอนการจัดเก็บเท่านั้น ถ้าเป็นเช่นนั้นโปรดแสดงตัวอย่าง (เช่นหนังสือไซต์กระดาษ ฯลฯ )

4
วัดขนาดของแถวตาราง PostgreSQL
ฉันมีตาราง PostgreSQL select *ช้ามากในขณะที่select idดีและรวดเร็ว ฉันคิดว่าอาจเป็นไปได้ว่าขนาดของแถวนั้นใหญ่มากและใช้เวลาในการขนส่งสักครู่หรืออาจเป็นปัจจัยอื่น ฉันต้องการฟิลด์ทั้งหมด (หรือเกือบทั้งหมด) ดังนั้นการเลือกเฉพาะเซ็ตย่อยไม่ใช่การแก้ไขด่วน การเลือกเขตข้อมูลที่ฉันต้องการยังคงช้า นี่คือคีคีโต๊ะของฉันลบชื่อ: integer | not null default nextval('core_page_id_seq'::regclass) character varying(255) | not null character varying(64) | not null text | default '{}'::text character varying(255) | integer | not null default 0 text | default '{}'::text text | timestamp with time zone …

4
จะรับชื่อฐานข้อมูลปัจจุบันจากภายใน PostgreSQL ได้อย่างไร
ใช้\c <database_name>ใน PostgreSQL จะเชื่อมต่อกับฐานข้อมูลที่มีชื่อ ชื่อของฐานข้อมูลปัจจุบันจะถูกกำหนดได้อย่างไร? เข้าสู่: my_db> current_database(); ผลิต: ERROR: syntax error at or near "current_database" LINE 1: current_database();
81 postgresql  psql 

1
เลื่อนระดับอัปเดต… จำกัด 1
ฉันมีฐานข้อมูล Postgres ซึ่งมีรายละเอียดเกี่ยวกับกลุ่มของเซิร์ฟเวอร์เช่นสถานะเซิร์ฟเวอร์ ('ใช้งาน', 'สแตนด์บาย' ฯลฯ ) เซิร์ฟเวอร์ที่ใช้งานอยู่ตลอดเวลาอาจจำเป็นต้องล้มเหลวในการสแตนด์บายและฉันไม่สนใจว่าจะใช้สแตนด์บายใดเป็นพิเศษ ฉันต้องการคิวรีฐานข้อมูลเพื่อเปลี่ยนสถานะของสแตนด์บาย - เพียงแค่หนึ่ง - และส่งคืน IP ของเซิร์ฟเวอร์ที่จะใช้ การเลือกสามารถโดยพลการ: เนื่องจากสถานะของเซิร์ฟเวอร์เปลี่ยนแปลงด้วยแบบสอบถามจึงไม่สำคัญว่าจะเลือกสแตนด์บายใด เป็นไปได้หรือไม่ที่จะ จำกัด คิวรีของฉันให้อัปเดตเดียว นี่คือสิ่งที่ฉันมี: UPDATE server_info SET status = 'active' WHERE status = 'standby' [[LIMIT 1???]] RETURNING server_ip; Postgres ไม่ชอบสิ่งนี้ ฉันจะทำอะไรที่แตกต่างกัน

3
ฉันจะระบุตำแหน่งสำหรับคอลัมน์ใหม่ใน PostgreSQL ได้อย่างไร
ถ้าฉันมีตารางที่มีคอลัมน์: id | name | created_date และต้องการเพิ่มคอลัมน์ฉันใช้: alter table my_table add column email varchar(255) จากนั้นคอลัมน์จะถูกเพิ่มหลังcreated_dateคอลัมน์ มีวิธีใดบ้างที่ฉันสามารถระบุตำแหน่งสำหรับคอลัมน์ใหม่ได้ เช่นเพื่อให้ฉันสามารถเพิ่มหลังจากnameได้รับตารางเช่น: id | name | email | created_date

5
การทำงานของดัชนีใน PostgreSQL
ฉันมีคำถามสองสามข้อเกี่ยวกับการทำงานของดัชนีใน PostgreSQL ฉันมีFriendsตารางที่มีดัชนีต่อไปนี้: Friends ( user_id1 ,user_id2) user_id1และuser_id2เป็นกุญแจต่างประเทศเข้าสู่userตาราง สิ่งเหล่านี้เทียบเท่ากันหรือไม่ ถ้าไม่เช่นนั้นทำไม Index(user_id1,user_id2) and Index(user_id2,user_id1) ถ้าฉันสร้างคีย์หลัก (user_id1, user_id2) มันจะสร้างดัชนีให้โดยอัตโนมัติหรือไม่ หากดัชนีในคำถามแรกไม่เท่ากันดัชนีใดจะถูกสร้างขึ้นบนคำสั่งคีย์หลักด้านบน

4
วิธีการใช้ psql โดยไม่แจ้งรหัสผ่าน?
ฉันเขียนสคริปต์เพื่อREINDEXจัดทำดัชนีในฐานข้อมูล นี่คือหนึ่งในนั้น: echo -e "\nreindex for unq_vbvdata_vehicle started at: `date "+%F %T"`" >> ${LOG_FILE} psql -U ${USERNAME} -h ${HOSTNAME} -d ${DBNAME} -c "REINDEX INDEX scm_main.unq_vbvdata_vehicle;" if [[ ${?} -eq 0 ]]; then echo "reindex for unq_vbvdata_vehicle finished at: `date "+%F %T"`" >> ${LOG_FILE} else echo "reindex for unq_vbvdata_vehicle failed" >> …
70 postgresql  index  psql 

5
วิธีการเปลี่ยนอาร์เรย์ json เป็นอาร์เรย์ postgres?
ฉันมีคอลัมน์dataที่ถือjsonเอกสารคร่าวๆเช่นนี้: { "name": "foo", "tags": ["foo", "bar"] } ฉันต้องการเปลี่ยนtagsอาร์เรย์ที่ซ้อนกันเป็นสตริงที่ต่อกัน ( foo, bar) ที่จะเป็นไปได้อย่างง่ายดายด้วยarray_to_string()ฟังก์ชั่นในทางทฤษฎี อย่างไรก็ตามฟังก์ชั่นนี้ไม่ได้ทำหน้าที่ในjsonอาร์เรย์ ดังนั้นฉันสงสัยว่าจะเปลี่ยนjsonอาร์เรย์นี้เป็น Postgres ได้arrayอย่างไร

2
จะเร็วกว่าอะไรแบบสอบถามขนาดใหญ่หรือแบบสอบถามขนาดเล็กจำนวนมาก
ฉันทำงานให้กับ บริษัท ที่แตกต่างกันและฉันสังเกตเห็นว่าบางคนชอบที่จะมีมุมมองที่จะเข้าร่วมโต๊ะกับ "ญาติ" ทั้งหมดของมัน แต่ในบางครั้งเราจำเป็นต้องใช้เพียง 1 คอลัมน์เท่านั้น ดังนั้นจะเร็วกว่าที่จะทำการเลือกแบบง่าย ๆ แล้ว "เข้าร่วม" ในรหัสระบบหรือไม่ ระบบอาจเป็น php, java, asp, ภาษาใด ๆ ที่เชื่อมต่อกับฐานข้อมูล ดังนั้นคำถามคือสิ่งที่เร็วไปจากฝั่งเซิร์ฟเวอร์ (php, java, asp, ruby, python ... ) ไปยังฐานข้อมูลรันหนึ่งแบบสอบถามที่ได้รับทุกสิ่งที่เราต้องการหรือไปจากฝั่งเซิร์ฟเวอร์ไปยังฐานข้อมูลและเรียกใช้ แบบสอบถามที่ได้รับคอลัมน์จากตารางเดียวเท่านั้นหรือไม่


9
ฉันจะใช้ currval () ใน PostgreSQL เพื่อรับรหัสที่แทรกล่าสุดได้อย่างไร
ฉันมีโต๊ะ: CREATE TABLE names (id serial, name varchar(20)) ฉันต้องการ "id ที่แทรกล่าสุด" จากตารางนั้นโดยไม่ต้องใช้การRETURNING idแทรก ดูเหมือนจะมีฟังก์ชั่นCURRVAL()แต่ฉันไม่เข้าใจวิธีการใช้งาน ฉันได้ลองกับ: SELECT CURRVAL() AS id FROM names_id_seq SELECT CURRVAL('names_id_seq') SELECT CURRVAL('names_id_seq'::regclass) แต่ไม่มีใครทำงาน ฉันcurrval()จะใช้เพื่อรับ id ที่แทรกล่าสุดได้อย่างไร

3
ข้อเสียของการใช้ UUID หรือ GUID เป็นคีย์หลักคืออะไร
ฉันต้องการสร้างระบบแบบกระจาย ฉันต้องการจัดเก็บข้อมูลในฐานข้อมูลและจะเป็นประโยชน์ในการใช้UUIDหรือGUIDเป็นคีย์หลักในบางตาราง ฉันคิดว่ามันเป็นข้อเสียของการออกแบบนี้เนื่องจาก UUID / GUID ค่อนข้างใหญ่และพวกมันเกือบจะสุ่ม ทางเลือกคือการใช้ INT เพิ่มขึ้นอัตโนมัติหรือยาว ข้อเสียของการใช้ UUID หรือ GUID เป็นคีย์หลักสำหรับตารางของฉันคืออะไร ฉันอาจจะใช้ Derby / JavaDB (บนไคลเอนต์) และ PostgreSQL (บนเซิร์ฟเวอร์) เป็น DBMS

2
สร้างดัชนีหากไม่มีอยู่
ฉันกำลังทำงานกับฟังก์ชั่นที่อนุญาตให้ฉันเพิ่มดัชนีหากไม่มีอยู่ ฉันพบปัญหาที่ฉันไม่สามารถรับรายการดัชนีเพื่อเปรียบเทียบได้ ความคิดใด ๆ นี่เป็นปัญหาที่คล้ายคลึงกับการสร้างคอลัมน์ที่แก้ไขด้วยรหัสนี้: https://stackoverflow.com/a/12603892/368511

3
ค้นหาระดับสูงสุดของฟิลด์ลำดับชั้น: ด้วย vs ไม่มี CTEs
หมายเหตุ: คำถามนี้ได้รับการปรับปรุงเพื่อสะท้อนให้เห็นว่าขณะนี้เรากำลังใช้ MySQL โดยทำเช่นนั้นฉันอยากจะดูว่ามันจะง่ายกว่านี้ถ้าเราเปลี่ยนไปใช้ฐานข้อมูลที่สนับสนุน CTE ผมมีตารางอ้างอิงตนเองกับคีย์หลักและต่างประเทศที่สำคัญidparent_id +------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | parent_id | int(11) | YES | | NULL | | | name | varchar(255) | …

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