Re: [pgsql-tr-genel] Re: [pgsql-tr-genel] Re: [pgsql-tr-genel] Re: [pgsql-tr-genel] Kayıt sayısını da döndürmek

From: "Ahmet" <corsairsoft(at)gmail(dot)com>
To: "PostgreSQL" <pgsql-tr-genel(at)postgresql(dot)org>
Subject: Re: [pgsql-tr-genel] Re: [pgsql-tr-genel] Re: [pgsql-tr-genel] Re: [pgsql-tr-genel] Kayıt sayısını da döndürmek
Date: 2006-03-28 17:37:51
Message-ID: 009401c6528e$57dd6a80$0400000a@asus
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-tr-genel

bu işlem için fonksiyon tanımlayabilirsiniz

bu yöntem sonucun dönmesi açısından hızlı olacaktır

örnek :

CREATE OR REPLACE FUNCTION toplam() RETURNS RECORD AS

$$

DECLARE

a.. sonuc record;

sorgum text := 'SELECT count (id) FROM tablom';

BEGIN

a.. EXECUTE sorgum INTO sonuc;

RETURN sonuc;

END;

$$

LANGUAGE 'plpgsql' STABLE;

test=# select toplam();

----- Original Message -----
From: Esref Atak
To: PostgreSQL
Sent: Tuesday, March 28, 2006 8:18 PM
Subject: Re: [pgsql-tr-genel] Re: [pgsql-tr-genel] Re: [pgsql-tr-genel] Re: [pgsql-tr-genel] Kayıt sayısını da döndürmek

On 3/28/06, Ahmet <corsairsoft(at)gmail(dot)com> wrote:
sembolik olarak group by id kulanabilirsiniz

veya

PHP ile yazıyorsanız pg_num_rows() fonksiyonunu kullanabilirsiniz
http://tr2.php.net/manual/en/function.pg-num-rows.php

Özür dilerim. Umduğum çözüm, bunlardan hiçbiri değil. PHP örneğindeki yöntem, ustaca bir yöntem değil. Zira, o yöntemde, örneğin 1 milyon kayıt varsa, bu kayıtların tamamı VTS tarafından PHP'ye gönderiliyor. PHP ise yalnızca sayıyor. Bu yöntem, hız ve bellek kaybı manasına geliyor. İlave olarak, ben LIMIT OFFSET kullanacağımda, PHP yöntemi "kafadan" başarısız olacaktır.

Her alanın adını GROUP BY ifadesine dahil etme yöntemi ise, hem bir çok karmaşık SQL ifadesinin hem daha da karmaşıklaşması, hem performans kaybına neden olması, hem de bazı durumlarda tamamen yetersiz kalması anlamına geliyor.

Acaba, başka bir yöntem mümkün müdür? Önerisi olan var mıdır? Mesela benim aklıma, şöyle bir Saklı Yordam geliştirmek bile geliyor:

sayfalama(sql, limit, offset)

bu yordam, geriye, hem kayıt kümesini döndürür, hem de bu kayıt kümesine yeni bir sütun ekleyip, bu sütunun, kayıt sayısını içermesini sağlayabilir. Fakat bu yöntem de biraz uç ve tuhaf bir yöntem gibi geliyor bana.

Nasıl bir amaç için böyle bir şeye ihtiyaç duyduğumu anlatabilmek için, bir örnek sayfa göstermek istiyorum:

www [nokta] antalya [nokta] com.tr/tr/guncel/etkinlik/index.cfm

Bu sayfadaki örnekte, belirtilen ölçütlere uyan ne kadar kayıt bulunduysa tümü Uygulama Sunucusu'na döndürülüyor. Uygulama Sunucusu'ndaki kodlar da kayıt sayısını sayıp, sayfanın sol alt tarafında görüntülüyor. Ardından, kayıtlar arasında döngü yapmak suretiyle, talep edilen aralıktaki kayıtları görüntülüyor. Fakat, arz ettiğim gibi bu yöntem; ağ trafiğini artırmak, bellek kaybı, işlem süresi uzaması vb bir dizi sorunu beraberinde getiriyor.

Umarım, ızdırabımı anlatabilmişimdir.

--
Saygılarımla,
Eşref Atak

In response to

Browse pgsql-tr-genel by date

  From Date Subject
Next Message Volkan YAZICI 2006-03-28 18:12:48 Re: pgsql ile select
Previous Message Esref Atak 2006-03-28 17:18:54 Re: Re: [pgsql-tr-genel] Re: [pgsql-tr-genel] Re: [pgsql-tr-genel] Kayıt sayısını da döndürmek