python - Sqliteの高速な行数

python sqlite

Sqlite DBに単一のテーブルがあり、多くの行があります。行数(テーブル内のアイテムの総数)を取得する必要があります。

select count(*) from tableを試してみましたが、各行にアクセスするようで非常に遅いです。

私もselect max(rowid) from tableを試しました。これは高速ですが、実際には安全ではありません。IDが再利用されたり、テーブルが空になったりする可能性があります。これはハックのようなものです。

テーブルサイズをすばやくきれいに見つける方法に関するアイデアはありますか?



Sqliteエンジン3.4.0を使用するPython 2.5のsqlite3バージョン2.3.2を使用します。
答え
null以外の列(たとえば、主キー)に何らかの種類のインデックスがありますか?はいの場合、インデックスをスキャンできます(うまくいけばそれほど長くはかかりません)。そうでない場合は、全表スキャンがすべての行をカウントする唯一の方法です。
関連記事

python - 各エンティティの定期的なタスク

python - AppEngine Pythonと 'IN'範囲のクエリを使用したデータモデリング

python - SqlAlchemy:動的クエリ

python - vplineとvlinesをmatplotlibのピクセル全体にスナップする

javascript - 良い例/テンプレート/ベストプラクティスAPIドキュメント

python - Django:より複雑な一意性制約?

python - Pythonでデータストアを適切にクエリする方法は? -基本的な問題

python - djangoを使用してFacebookのメールを取得する

python - Pythonがサブプロセスと通信する

python - ソラリス上のpython numpy、遅い、またはリンクされていませんか?