Başlıktan da anlaşılacağı gibi ... Tabloda bir kayıt olup olmadığını belirlemek için en az yük ile en hızlı yolu anlamaya çalışıyorum.
Örnek sorgu:
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 = ?;
Say ?
ile takas 'TB100'
... hem birinci ve ikinci sorgular (... diyelim ki aynı sonucu dönecektir 1
bu konuşma için). Son sorgu 'TB100'
beklendiği gibi döner veya id
tabloda yoksa hiçbir şey döndürmez .
Amaç, id
tabloda olup olmadığını anlamaktır. Değilse, program daha sonra kaydı ekler, eğer öyleyse, program bu kaydı atlar veya bu sorunun kapsamı dışındaki diğer program mantığına dayalı bir UPDATE sorgusu gerçekleştirir.
Hangisi daha hızlı ve daha az yükü var? (Bu, her program çalışması için on binlerce kez tekrarlanacaktır ve günde birçok kez çalıştırılacaktır).
(Bu sorguyu M $ sağlanan JDBC sürücüsü aracılığıyla Java'dan M $ SQL Server'a karşı çalıştırmak)
if exists(select null from products where id = @id)
; doğrudan bir istemci tarafından çağrılan bir sorgudaysa select case when exists (...) then 1 else 0 end
.