execute
вероятно не е по-бърз от executeInsert
, може дори да е по-бавно (на ICS execute
извиква executeUpdateDelete
и отхвърля върнатата стойност). Трябва да тествате това, но се съмнявам, че ще откриете истинска разлика тук.
AFAIK, Безопасно е да се използва само execute
ако не се нуждаете от върнати стойности, но не бих разчитал, че това е вярно в бъдещите версии на Android. Документацията казва не, така че може би някой ще промени поведението, за да отрази това. По-старите реализации изглежда използват execute
също (напр. 2.1 delete()
програмен код). Jelly Bean например промени много зад кулисите на SQLite, но все пак трябва да работи при използване на execute
Освен това, ако не използвате същия SQLiteStatement
отново и отново, докато просто повторно свързвате аргументите, вероятно не си струва да го използвате. Създаване на нов всеки път, когато извикате обикновения insert
, update
, ... методите са бързи в сравнение с действителния достъп до базата данни и необходимия I/O диск. Транзакциите от друга страна помагат много, тъй като синхронизирането на състоянието на базата данни на диска за всеки израз е наистина бавно.