我的表有以下字段:SQLite的掃描臺性能
- 日期(整數)
- 狀態(整數)
- 產品編號(整數)
- 產品名稱(整數)
- 說明(文字)(最大文本長度 3000個字符)
將會有超過800萬行。我需要決定是否應該將產品說明放在另一張表格中。我的主要目標是讓這個聲明非常快:
SELECT Date,State,ProductId,ProductName FROM tablename ORDER BY DATE desc LIMIT 100
SQL結果將不會獲取上述語句中的Description字段值。只有在應用程序中選擇了行(新查詢)時,用戶纔會看到說明。
我真的想要在同一個表中有產品說明,但我不知道SQLite如何掃描行。如果日期值不匹配我會假設SQLite可以快速跳到下一行。或者,也許它需要掃描行的所有字段,直到它到達Description字段值的末尾,以便知道該行已結束?如果需要掃描所有字段以進入下一行,說明字段中的3000個字符的值會大大降低速度?
編輯:由於INSERT速度很重要,因此不應使用索引。
編輯:試圖將它全部放在一張表中的唯一原因是我想在數百個項目的一個事務中執行INSERT和UPDATE。可以在同一個事務中插入相同的項目並稍後更新,因此我無法知道每個項目的最後一個插入ID。
*如何重要?查詢中的索引加速通常比INSERT的任何減速要大得多。 –
您是否真的測量了INSERT性能? –
是的,在應用程序設計中是不可接受的。 –