Jump to content
php.lv forumi

Pārbaude vai eksistē ieraksts


Recommended Posts

Es gan neesmu drošs, vai tas ir ātrākais variants.

ja jazin pilnigi visi ieraksti bez WHERE , tad atraks buus COUNT(*) , kas vienkarshi atgrieziis ierakstu skaitu tabulaa, (MYSQL skaitu glabaa atseviskji, taa kaa nekaada parlase nebuus)

Ja ar WHERE tad ir vienalga vai ID vai * ( protams ja ID ir primara atslega )

IMPHO num_rowus, buus mazliet lenaaks (nedaudz ...) jo MYSQL izmanto savu ieksejo mehanismu.. kas ir optimizets tieshi prieksh COUNT(*)..

P.S. bet nu ipashi nevajag iesprinkt, jo starpiiba buus nieciiga ...

Link to post
Share on other sites

Es gan sapratu, ka jāčeko specifiska ieraksta eksistence, kas atbilst noteiktiem nosacījumiem.

Pieņemot, ka mums vajag zināt vai eksistē tikai 1 tāds ieraksts, bet nevis to skaitu, tad gadījumos, kad ieraksts var būt tikai 1, tad droši vien count(*) būs pilnīgi OK. Gadījumos, kad tādi ieraksti var būt lielā daudzumā count(*) sanāk tā kā nevajadzīgi par daudz info, jo mums jau vajag tikai nosacītu pazīmi, tāpēc ir vērts atlasīt tiešām reālu pazīmi, piemēram, šādi:

select 1 from t where <nosacījumi> limit 1

Tad tiklīdz 1 ieraksts būs atrasts, varēs atgriezt rezultātu un nemeklēt visus pārējos 10, 100 vai miljons ierakstus.

 

Gints Plivna

http://datubazes.wordpress.com/

Link to post
Share on other sites

Nedaudz painteresējos, te ir varianti:

 

EXPLAIN SELECT COUNT(`id`) FROM `table`
EXPLAIN SELECT COUNT(*) FROM `table`
SELECT EXISTS(SELECT 1 FROM `table`)
(SELECT COUNT(`id`) FROM `table`) > 0
(SELECT COUNT(*) FROM `table`) > 0
EXISTS(SELECT * FROM `table`)

Tagad tikai benčmarks jāuztaisa... :)

Link to post
Share on other sites

man ir metode, kurā notiek uzreiz datu fečošana un atgriežana vai null atgriešana, ja datu nav.

Attiecīgi

 


if ($dati=DB::query('SELECT * FROM data WHERE kautkas=%s',$kautkas)->row()){
 print_r($dati); //darbojamies ar datiem
} else {
 //datu nav, domājam ko darīt.
}

Edited by codez
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...