ตามที่ชื่อแนะนำ ... ฉันกำลังพยายามหาวิธีที่เร็วที่สุดโดยมีค่าใช้จ่ายน้อยที่สุดเพื่อดูว่ามีระเบียนอยู่ในตารางหรือไม่
แบบสอบถามตัวอย่าง:
SELECT COUNT(*) FROM products WHERE products.id = ?;
vs
SELECT COUNT(products.id) FROM products WHERE products.id = ?;
vs
SELECT products.id FROM products WHERE products.id = ?;
สมมติว่า?
มีการสลับกับ'TB100'
... ทั้งแบบสอบถามที่หนึ่งและที่สองจะส่งกลับผลลัพธ์เดียวกัน (พูดว่า ... 1
สำหรับการสนทนานี้) แบบสอบถามล่าสุดจะส่งคืน'TB100'
ตามที่คาดไว้หรือไม่มีสิ่งใดหากid
ไม่มีอยู่ในตาราง
จุดประสงค์คือการคิดออกว่าid
อยู่ในตารางหรือไม่ มิฉะนั้นโปรแกรมจะแทรกเร็กคอร์ดต่อไปถ้าเป็นเช่นนั้นโปรแกรมจะข้ามหรือดำเนินการค้นหา UPDATE ตามตรรกะของโปรแกรมอื่นที่อยู่นอกขอบเขตของคำถามนี้
ไหนเร็วกว่าและมีค่าใช้จ่ายน้อยลง (ซึ่งจะถูกทำซ้ำหลายหมื่นครั้งต่อการรันโปรแกรมและจะทำงานหลายครั้งต่อวัน)
(การรันเคียวรีนี้เทียบกับ M $ SQL Server จาก Java ผ่านทาง M $ ไดร์เวอร์ JDBC ที่ให้ไว้)
if exists(select null from products where id = @id)
; select case when exists (...) then 1 else 0 end
ถ้าในแบบสอบถามที่เรียกว่าโดยตรงจากลูกค้า