可以說我有一個數據庫表,它由三列組成:id
,field1
和field2
。這張表可能有100到100000行之間的任何地方。我有一個python腳本,應該在此表中插入10-1,000個新行。但是,如果表中已存在新的field1
,它應該執行UPDATE
,而不是INSERT
。Python性能:搜索大列表vs sqlite
以下哪種方法更有效?
- 做一個
SELECT field1 FROM table
(field1
是唯一的),並將其存儲在列表中。然後,對於每個新行,請使用list.count()
來確定是INSERT
還是UPDATE
- 對於每一行,運行兩個查詢。首先,
SELECT count(*) FROM table WHERE field1="foo"
然後是INSERT
或UPDATE
。
換句話說,執行n + 1個查詢和搜索列表,或者2n個查詢並獲得sqlite搜索效率更高嗎?
我不確定我是否理解「計數」的必要性 - 您究竟計算了什麼?你只需要檢查存在,對吧? (因爲每個'field1'值只能有一個..) – tzaman 2010-08-04 10:30:22
好點,我想它可以簡化爲'SELECT 1 FOM table WHERE field1 =「foo」'。 – 2010-08-04 13:51:12