[C] mysql api
Volevo sapere se esiste tra le api del c di mysql (possibilmente 4) una funzione che restituisce true o false se esiste o meno un dato valore.
Adesso sto facendo in questo modo: select * from ciao where campo1 = valoreX limit 1 Se mi restituisce almeno un valore la funzione restituisce true altrimenti false. il problema è che questo sistema non è sicuramente il più veloce. Infatti quando le operazioni sono migliaia il programma è di una lentezza estenuante. Grazie |
up
|
up
|
Quote:
La questione principale è che con le API del MySQL (e questo varrebbe anche per altri DB, credo), puoi solamente eseguire delle query ed ottenere un "record-set". Per dirla in altri termini, non ci sono funzioni per sapere se esiste o meno un dato valore ... tutto passa attraverso una query SQL e attraverso l'utilizzo di un result-set (anche per altre informazioni .. non solo per i dati veri e propri). Se dici che quella query impiega molto tempo, posso pensare che 'campo1' non sia in chiave. Se lo fosse, sarebbe certamente molto molto più veloce. |
Ok,grazie.
Non sapevo se il mio metodo fosse il più 'elegante' possibile. A quanto pare sì. Comunque ora ho un altro problema: La mia applicazione è multithread. Quando ogni thread inserisce dati nel database deve conoscere l'ID del dato che esso stesso ha inserito, e lo può sapere tramite mysql_insert_id() . Solo che quella funzione restituisce l'ID dell'ultimo dato immesso, che potrebbe essere quello immesso da un altro thread e non dallo stesso che usa mysql_insert_id() . Come potrei risolvere il problema ? Ciao |
Quote:
Comunque per quanto riguarda la query iniziale, io eseguireri Codice:
select count(*) from ciao where campo1 = valoreX |
Quote:
per il secondo perchè non un mutex ? |
Quote:
Se un altro processo scrive sul db, mysql_insert_id() ti restituisce l'id inserito da quel processo su cui non hai certo controllo. |
Quote:
|
Quote:
|
Quote:
|
Quote:
Chiunque, su qualunque tabella del database scriva, causa una modifica del valore restituito da mysql_insert_id(). Un pò troppo azzardata come ipotesi. |
Quote:
|
Quote:
|
Quote:
|
Quote:
Prima inserisco il dato. Dopo vado a ricercarlo e leggo l'ID. Lento ma sicuro. Che tu sappia glia ltri database stile SQL non open, hanno lo stesso difetto ? |
Tutti gli orari sono GMT +1. Ora sono le: 22:36. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Hardware Upgrade S.r.l.