タグ付けされた質問 「sqlite」

SQLiteは、自己完結型、サーバーレス、ゼロ構成のトランザクションSQLデータベースエンジンを実装するソフトウェアライブラリです。

10
SQLiteの1秒あたりのINSERTパフォーマンスを向上させる
SQLiteの最適化には注意が必要です。Cアプリケーションの一括挿入のパフォーマンスは、1秒あたり85挿入から1秒あたり96,000挿入を超える場合があります。 背景: SQLiteをデスクトップアプリケーションの一部として使用しています。大量の構成データがXMLファイルに格納されており、アプリケーションが初期化されるときに解析され、SQLiteデータベースにロードされてさらに処理されます。SQLiteは高速であり、特別な構成を必要とせず、データベースは単一のファイルとしてディスクに保存されるため、この状況に最適です。 理論的根拠: 最初は私が見ているパフォーマンスにがっかりしました。SQLiteのパフォーマンスは、データベースの構成方法とAPIの使用方法に応じて(一括挿入と選択の両方で)大きく異なる可能性があることがわかりました。すべてのオプションと手法が何であるかを理解することは簡単なことではなかったので、同じコミュニティのWikiエントリを作成してスタックオーバーフローリーダーと結果を共有し、同じ調査の問題を他の人に知らせるのは賢明だと思いました。 実験:一般的なパフォーマンスのヒント(つまり、「トランザクションを使用する!」)について単に話すのではなく、Cコードを記述して実際にさまざまなオプションの影響を測定するのが最善だと思いました。いくつかの簡単なデータから始めましょう: トロント市の完全な輸送スケジュールの28 MBのタブ区切りテキストファイル(約865,000レコード) 私のテストマシンは、Windows XPを実行する3.60 GHz P4です。 コードは、Visual C ++ 2005で「完全最適化」(/ Ox)付きの「リリース」としてコンパイルされ、高速コード(/ Ot)が優先されます。 私はテストアプリケーションに直接コンパイルされたSQLite "Amalgamation"を使用しています。私がたまたま持っているSQLiteのバージョンは少し古い(3.6.7)ですが、これらの結果は最新のリリースに匹敵すると思われます(そうでない場合はコメントを残してください)。 コードを書いてみましょう! コード:テキストファイルを1行ずつ読み取り、文字列を値に分割し、データをSQLiteデータベースに挿入する単純なCプログラム。この「ベースライン」バージョンのコードでは、データベースが作成されますが、実際にはデータを挿入しません。 /************************************************************* Baseline code to experiment with SQLite performance. Input data is a 28 MB TAB-delimited text file of the complete Toronto Transit System schedule/route info from http://www.toronto.ca/open/datasets/ttc-routes/ **************************************************************/ …

16
各GROUP BYグループの最初の行を選択しますか?
タイトルが示すように、でグループ化された各行セットの最初の行を選択したいと思いますGROUP BY。 具体的には、purchases次のようなテーブルがある場合: SELECT * FROM purchases; 私の出力: id | お客様| 合計 --- + ---------- + ------ 1 | ジョー| 5 2 | サリー| 3 3 | ジョー| 2 4 | サリー| 1 それぞれが行っidた最大の購入(total)について問い合わせたいのcustomerですが。このようなもの: SELECT FIRST(id), customer, FIRST(total) FROM purchases GROUP BY customer ORDER BY total DESC; 期待される出力: FIRST(id)| お客様| …


22
SQLiteでテーブルが存在するかどうかを確認するにはどうすればよいですか?
特定のユーザーテーブルが存在するかどうかを確実にSQLiteで確認するにはどうすればよいですか? テーブルの "select *"がエラーを返したかどうかをチェックするような信頼できない方法を求めているのではありません(これは良いアイデアですか?)。 その理由は次のとおりです。 私のプログラムでは、いくつかのテーブルがまだ存在しない場合は、作成してデータを設定する必要があります。 それらがすでに存在する場合、いくつかのテーブルを更新する必要があります。 問題のテーブルがすでに作成されていることを通知するために、代わりに他のパスを使用する必要があります-たとえば、ディスク上のプログラムの初期化/設定ファイルで特定のフラグを作成/出力/設定することによって、 それとも私のアプローチは理にかなっていますか?
894 sqlite 

10
AndroidでのSQLiteのベストプラクティスは何ですか?
Androidアプリ内のSQLiteデータベースでクエリを実行する場合、何がベストプラクティスと見なされますか? AsyncTaskのdoInBackgroundから挿入、削除、選択クエリを実行しても安全ですか?または、UIスレッドを使用する必要がありますか?データベースクエリは「重い」可能性があり、アプリをロックする可能性があるためUIスレッドを使用しないでください。その結果、アプリケーションが応答しなくなります(ANR)。 複数のAsyncTaskがある場合、それらは接続を共有する必要がありますか、それともそれぞれに接続を開く必要がありますか? これらのシナリオのベストプラクティスはありますか?
694 android  database  sqlite 


24
SQLiteデータベースに一度に複数の行を挿入することは可能ですか?
MySQLでは、次のように複数の行を挿入できます。 INSERT INTO 'tablename' ('column1', 'column2') VALUES ('data1', 'data2'), ('data1', 'data2'), ('data1', 'data2'), ('data1', 'data2'); しかし、このようなことをしようとするとエラーが発生します。SQLiteデータベースに一度に複数の行を挿入することは可能ですか?それを行うための構文は何ですか?
551 sql  sqlite  syntax 

18
SQLite-INSERTまたはREPLACEではなくUPSERT
http://en.wikipedia.org/wiki/Upsert SQL Serverに更新ストアドプロシージャを挿入する SQLiteでこれを行うために私が考えていなかった賢い方法はありますか? 基本的に、レコードが存在する場合は4つのカラムのうち3つを更新します。レコードが存在しない場合は、4番目のカラムのデフォルト(NUL)値でレコードを挿入します。 IDは主キーであるため、UPSERTへのレコードは1つしかありません。 (明らかに更新または挿入する必要があるかどうかを判断するために、SELECTのオーバーヘッドを回避しようとしています) 提案? SQLiteサイトでTABLE CREATEの構文を確認できません。テスト用のデモは作成していませんが、サポートされていないようです。 もしそうなら、私は3つの列を持っているので、実際には次のようになります: CREATE TABLE table1( id INTEGER PRIMARY KEY ON CONFLICT REPLACE, Blob1 BLOB ON CONFLICT REPLACE, Blob2 BLOB ON CONFLICT REPLACE, Blob3 BLOB ); ただし、最初の2つのblobは競合を引き起こさず、IDのみが発生するので、(必要に応じて)Blob1とBlob2は置き換えられません。 バインドデータが完全なトランザクションである場合のSQLiteでのUPDATEは、更新される送信された各行に以下が必要であることを意味します。 ステートメントオブジェクトの寿命は次のようになります。 sqlite3_prepare_v2()を使用してオブジェクトを作成します sqlite3_bind_インターフェイスを使用して値をホストパラメータにバインドします。 sqlite3_step()を呼び出してSQLを実行します sqlite3_reset()を使用してステートメントをリセットし、手順2に戻って繰り返します。 sqlite3_finalize()を使用してステートメントオブジェクトを破棄します。 UPDATE INSERTに比べて遅いと思いますが、主キーを使用したSELECTと比較するとどうですか? おそらく、selectを使用して4番目の列(Blob3)を読み取り、REPLACEを使用して、元の4番目の列と最初の3列の新しいデータをブレンドした新しいレコードを書き込む必要がありますか?
535 sql  sqlite  upsert 

17
.NET 4.0プロジェクトで.NET 2.0混合モードアセンブリを参照するには、どの「追加構成」が必要ですか?
.NET 4.0機能の一部を使用したいプロジェクトがありますが、コア要件は、2.Xに対してコンパイルされたSystem.Data.SQLiteフレームワークを使用できることです。ここで受け入れられた回答など、これが可能であることに言及していますが、実際にこれを達成する方法はわかりません。 2.Xアセンブリを参照しながら4.0プロジェクトを実行しようとすると、次のようになります。 混合モードアセンブリは、ランタイムのバージョン 'v2.0.50727'に対してビルドされ、追加の構成情報がないと4.0ランタイムにロードできません。 どのような「追加構成」が必要ですか?

6
MySQLのDESCRIBE [テーブル]に相当するSQLiteはありますか?
SQLiteの学習を始めたばかりです。MySQLのように、テーブルの詳細を表示できると便利ですDESCRIBE [table]。PRAGMA table_info [table]基本的な情報しか含まれていないため、十分ではありません(たとえば、列が何らかのフィールドであるかどうかは表示されません)。SQLiteはこれを行う方法を持っていますか?
441 mysql  sqlite 

18
Sqlite3データベースの列名のリストを取得するにはどうすればよいですか?
iPhoneアプリを新しいデータベースバージョンに移行したい。一部のバージョンを保存していないため、特定の列名が存在するかどうかを確認する必要があります。 このStackoverflowエントリは、選択を行うことを提案します SELECT sql FROM sqlite_master WHERE tbl_name = 'table_name' AND type = 'table' 結果を解析します。 それは一般的な方法ですか?代替案?
373 sqlite 


10
JavaとSQLite [終了]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか? Stack Overflowのトピックとなるように質問を更新します。 6年前休業。 単一のファイルデータベースが提供するきちんとしたところに惹かれます。SQLiteをJavaに接続して使用するためのドライバー/コネクターライブラリはどこにありますか。 ラッパーライブラリhttp://www.ch-werner.de/javasqliteを見つけましたが、他にもっと有名なプロジェクトはありますか?
333 java  sqlite 

9
非常に大きなデータベースファイルを使用するsqliteのパフォーマンス特性は何ですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 この質問を改善する sqliteは、サポートされている場合でも、非常に大きなデータベースファイルでは十分に機能しないことを知っています(1 GBを超えるファイルサイズが必要な場合は、エンタープライズrdbmsの使用を検討することをお勧めします。もう見つかりません。古いバージョンのsqliteに関連している可能性があります)。 しかし、私の目的のために、他の解決策を検討する前に、それが実際にどれほど悪いかを理解したいと思います。 私は2GBから数ギガバイトの範囲のsqliteデータファイルについて話しています。誰でもこれについて何か経験がありますか?ヒント/アイデアはありますか?

4
コアデータとSQLite 3 [終了]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 私はすでにリレーショナルデータベースに精通しており、過去にSQLite(および他のデータベース)を使用しました。ただし、Core Dataには一定の魅力があるため、次のアプリケーションで使用するために学ぶために少し時間を費やすことを検討しています。 SQLiteを介してCore Dataを使用するメリットはありますか?それぞれの長所/短所は何ですか? SQL Serverデータベースを選択する代わりに、AppleがMail.appやiPhoto.appなどの主要なアプリケーションの多くにコアデータを使用しない場合、コアデータを学習するコストを正当化するのは難しいと思います。SQLiteはiPhoneでも広く使用されています。 両方の使用に慣れている人は、自分の経験についてコメントできますか?おそらく、ほとんどのことと同様に、問題はどちらか一方を単に使用するよりも深いですか?
314 cocoa  macos  core-data  sqlite 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.