execute
pravděpodobně není rychlejší než executeInsert
, může být dokonce pomalejší (na ICS execute
volá executeUpdateDelete
a zahodí návratovou hodnotu). Musíte to otestovat, ale pochybuji, že zde najdete skutečný rozdíl.
AFAIK, Je bezpečné použít pouze execute
pokud nepotřebujete návratové hodnoty, ale nespoléhal bych na to, že to bude platit v budoucích verzích Androidu. Dokumentace říká, že ne, takže možná někdo změní chování, aby to odráželo. Zdá se, že starší implementace používají příkaz execute
také (např. 2.1 delete()
zdrojový kód). Jelly Bean se například hodně změnil v zákulisí SQLite, ale měl by stále fungovat při použití execute
Kromě toho, pokud nepoužíváte stejný SQLiteStatement
znovu a znovu při pouhém převázání argumentů to pravděpodobně nemá cenu používat. Pokaždé, když zavoláte běžné insert
, vytvoříte nový , update
, ... je rychlý ve srovnání se skutečným přístupem k databázi a požadovaným diskovým I/O. Na druhou stranu transakce hodně pomáhají, protože synchronizace stavu databáze na disku pro každý příkaz je opravdu pomalá.