問題タブ [sql-optimization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server-2008 - 100万行を超えるSQL結果をコピーしてExcelに貼り付けることはできますか?
私は次のような巨大なSQLクエリを実行しています。
Excelには最大100万行あると聞きました。これにアプローチする方法がわからない
テーブルBIG_Sessionsは巨大です。特定のRespondentIDに対して複数のSessionIDをプルしていますが、それぞれ1つだけ必要です。
これを吹き飛ばす方法がわかりません。ヒントをいただければ幸いです。
sql - クエリの最適化
Microsoft Accessにクエリがあり、1000レコードを返すのに約6秒かかります。
必要なフィールドにインデックスを付けます。 tb_bauteileには約3000レコードがあり、FehlerCodes_akt_Listeには約20000レコードがあります。Where and order句を削除すると、クエリはレコードを非常に高速に返します。クエリを最適化するにはどうすればよいですか?
mysql - SQLエンジンはそこまで最適化されていますか? (例を参照)
次のようにDBにクエリを実行するとします。
私の質問は:
エンジンT1.factor1 * T2.factor2
は1 回またはN 回実行しますか?
(選択したDBエンジンに関連する回答をお願いします!)
より一般的な答えを出すこともできます (2 つではなくP因子があるとしましょう。
EDIT :T1.factor1 * T2.factor2
出力行ごとに異なる値を持つ、選択した計算集約型の関数に置き換えることができます。
mysql - GROUP_BY クエリのうち COUNT(*) 件を最適化しています
以下は、ユーザーの複数のアカウントによってグループ化された未表示メッセージ数のリストを返す実際の SQL クエリです。ただし、実際にはカウントは必要ありません。未表示のメッセージが存在することを示すために少しだけ必要です。かなり複雑な JOIN ロジックを分解せずに、COUNT を EXISTS/HAVING/DISCTINCT 1 やその他の手法に置き換えることで、クエリを最適化する方法がわかりますか?
最初は、簡単に最適化するために COUNT を FIRST に置き換えることさえできると思っていましたが、MySQL ではうまくいきません...
(私はこの質問を見てきましたが、GROUP BYにより、私が見た代替手段を適用することが難しくなります)
java - StoredProceduresを使用せずに複数のResultSetを取得する
ResultSet
Java 1.5には、StoredProcedures /を使用せずに、1回のSQL呼び出しでDB2データベースから複数のオブジェクトを取得する方法はありますCallableStatements
か?
mysql - 250万行のMySqlの最後のレコードを取得する方法
MySqlテーブルの最後のレコードを取得したいのですが、テーブルには250万行があります。最後の行を効率的に取得するにはどうすればよいですか?
順序と制限を使用していますが、クエリは約15秒実行されます。この値をほぼゼロに減らす必要があります。
私のSQLクエリ:
SELECT id FROM table1 WHEREscenedevice_id = X AND module_id = Y ORDER BY id DESC LIMIT 0,1
編集:私はMAX(id)も試しました。
編集:これが私のテーブルです-
ありがとう。
subquery - サブクエリの結果を再利用してクエリ全体を最適化できますか?
以下のクエリを使用して、profile_run_key の上位 2 つのレコードを取得しています。これを行うために、ほぼ同様の 3 つのクエリを使用しています。これは、「where」句のためにテーブルを 3 回トラバースしていることを意味します。したがって、これは実行に 3(n) 時間かかると思います。または、「Order by」を使用できますが、実行には nlogn 時間がかかります。
以下のサブクエリの結果を再利用できるかどうか疑問に思っていました (一時テーブルを作成したくありません)。代替案はありますか?推測?
sql - バインディングパラメータの後に実行プランを構築するためにPostgresQLオプティマイザを作成するにはどうすればよいですか?
PostgresQL9.1用のPg/PLSQL関数を開発しています。SQLクエリで変数を使用すると、オプティマイザは不適切な実行プランを作成します。しかし、変数をその値に置き換えれば、計画は大丈夫です。例えば:
3秒で実行
と
300msで実行
最初のケースでは、オプティマイザはv_paramの任意の値に対して固定プランを生成します。
2番目のケースでは、オプティマイザーは指定された値に基づいてプランを生成し、プランのキャッシュを使用しないにもかかわらず、大幅に効率的です。
オプティマイザーを動的バインディングなしでプランを生成し、クエリを実行するたびにプランを生成するようにすることは可能ですか?
sql - SQL query performance explanation
I have this query(of course with couple joins across tables and some views which I will call x for simplicity).
- Case 1 :
select * from x
-> returns in 10 sec, still acceptable, fairly heavy on joins and lot of data - Case 2 :
select * from x where userid = 1
-> returns in 0-1 sec, good enough Case 3 : using SP :
if @userid = -1 select * from x else select from x where userid = @userid
-> now calling sp with paramenter userid 1 should return on 0-1 sec as it should be comparable to case 2 but in fact it returns in 10 sec.Now, parameter masking OR WITH RECOMPILE on sp OR OPTION (recompile) on query with where clause doesn't help, What makes the SP run faster with
userid = something
is putting OPTION(recompile) on the first part of the SP ie on the query without where clause. :- Case 4 : using SP :
if @userid = -1 select * from x option (recompile) else select * from x where userid = @userid
Any explanation?
I can guess earlier it was using optimization based of query without where clause even for the query with where clause, but why is that?
mysql - タグ マッチング用に SQL クエリを最適化する
データセットの例:
id
両方ともtag
索引付けされています。
タグ [車、自転車] に一致する ID を取得しようとしています (タグの数は異なる場合があります)。
そのための単純なクエリは次のようになります。
ただし、group by と、1 つのタグに一致するすべての行が group by で考慮されるという事実のため、これは非常に非効率的です (そして、私は大量のボリュームを持っています)。
この状況でより効率的なクエリはありますか?
私が見る唯一の解決策は、次のようなものを含む別のテーブルを用意することです。
しかし、これを実装して最新の状態に維持するのは簡単なソリューションではありません。
追加情報:
- 名前の一致は正確である必要があります (全文索引なし)
- タグの数は常に 2 とは限りません