問題タブ [query-performance]
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 - NULL 値はデータベース検索のパフォーマンスにどのように影響しますか?
私たちの製品には汎用検索エンジンがあり、検索パフォーマンスを最適化しようとしています。クエリで使用されるテーブルの多くは、NULL 値を許可します。最適化のために null 値を許可しないようにテーブルを再設計する必要がありますか?
当社の製品は と の両方Oracle
で動作しMS SQL Server
ます。
mysql - MySQL で数百万行を削除する
私は最近、私が取り組んでいたサイトでバグを見つけて修正しました。これにより、テーブル内に何百万ものデータの重複行が発生し、それらがなくても非常に大きくなります (まだ数百万)。これらの重複行を簡単に見つけることができ、単一の削除クエリを実行してそれらをすべて削除できます。問題は、一度にこれほど多くの行を削除しようとすると、テーブルが長時間ロックされることです。これは、可能であれば回避したいと考えています。(テーブルをロックすることによって) サイトをダウンさせずに、これらの行を取り除くことができる唯一の方法は次のとおりです。
- 数千の小さな削除クエリをループで実行するスクリプトを作成します。これにより、理論的にはロックされたテーブルの問題を回避できます。これは、他のクエリがキューに入って削除の間に実行できるためです。ただし、それでもデータベースの負荷がかなり高くなり、実行に時間がかかります。
- テーブルの名前を変更し、既存のテーブルを再作成します (現在は空になります)。次に、名前が変更されたテーブルでクリーンアップを行います。新しいテーブルの名前を変更し、古いテーブルの名前を元に戻して、新しい行を名前を変更したテーブルにマージします。これにはかなり多くの手順が必要ですが、中断を最小限に抑えて作業を完了する必要があります。ここで唯一難しいのは、問題のテーブルがレポート テーブルであることです。名前を変更して空のテーブルを元の場所に配置すると、元の場所に戻すまですべての履歴レポートが消えてしまいます。さらに、格納されているデータの種類が原因で、マージ プロセスが少し面倒になる可能性があります。全体として、これは今のところ私の選択の可能性が高いです。
他の誰かが以前にこの問題を抱えていたかどうか、もしそうなら、サイトを停止せずに、できればユーザーへの中断を最小限に抑えて、どのように対処したのだろうか? 2 番目の方法、または別の同様の方法を使用する場合、夜遅くに実行し、翌朝早くマージを実行するようにスケジュールを設定し、事前にユーザーに知らせることができるので、大したことではありません。誰かがクリーンアップを行うためのより良い、またはより簡単な方法についてアイデアを持っているかどうかを確認しているだけです.
sql-server - このSQLステートメントのパフォーマンスを向上させることはできますか?
あるテーブルから別のテーブルに編集をマージするためのSQLステートメントがあります。つまり
実際、私は最新の編集(TimeStampによる)フィールドを取得しようとしています。これには、すべての累積編集が含まれるためです。これにより、パフォーマンスを向上させることができると確信しています。つまり、SELECT max(mm.SSIS_TIMESTAMP)
ネストされたクエリをその上の結合に統合することができます。
何かご意見は?
sql - クラスタ化インデックス シークのパフォーマンスを向上させる方法
実行速度が非常に遅いクエリのパフォーマンスを改善しようとしています。実際の実行計画を経て; Clustered Index Seekが 82% を占めていることがわかりました。Index Seekのパフォーマンスを向上させる方法はありますか?
索引:
表 (簡潔にするために一部の列を省略):
sql-server - SQLServerINとEXISTSのパフォーマンス
次のうちどれがより効率的でしょうか?
IN
SQL Serverが結果セットを大きなIF
ステートメントに変えると信じているので、私は常に使用について少し慎重でした。結果セットが大きい場合、パフォーマンスが低下する可能性があります。結果セットが小さい場合は、どちらが望ましいかわかりません。大きな結果セットの場合、EXISTS
より効率的ではないでしょうか?
対。
mysql - MySQLEmbeddedSELECTとJOIN
次の間に顕著な違いがありますか?
と
どちらがいいですか?
mysql - MySQLの結果を文字列にキャストする方法は?
クエリがあります:
これは、「2,12,29,714,543,1719」のような文字列を返します。そして、別のクエリがあります:
今では機能していません。
これらのクエリを個別に実行することによってのみ、それを機能させることができました。単一のクエリに保持するにはどうすればよいですか?
sql - クエリ パフォーマンスに対するプロジェクション数の影響
テーブルから複数の列を選択するクエリのパフォーマンスを改善したいと考えています。列数を制限するとクエリのパフォーマンスに影響があるかどうか疑問に思っていました。
sql-server - Web から実行するとクエリがタイムアウトするが、SSMS から実行すると超高速
私が管理している Web アプリケーションで SQL タイムアウトの原因をデバッグしようとしています。私は C# コード ビハインドのソース コードを持っているので、どのコードが実行されているかを正確に把握しています。タイムアウトした SQL コードを実行する行までアプリケーションをデバッグし、SQL プロファイラーで実行されているクエリを監視しました。
このクエリを Web から実行すると、30 秒後にタイムアウトになります。ただし、プロファイラーに表示されているとおりにクエリをカット アンド ペーストし、SSMS に入れて実行すると、ほぼ瞬時に返されます。Web が使用している接続で ARITHABORT が OFF に設定されているという問題を追跡しました (つまり、SSMS セッションで ARITHABORT を OFF にすると長時間実行され、ON に戻すと実行されます)。非常に迅速に)。ただし、ARITHABORT の説明を読むと、当てはまらないようです...単純な SELECT のみを実行しており、演算はまったく実行されていません..WHERE 条件を使用した 1 つの INNER JOIN のみ:
ARITHABORT OFF がこのコンテキストでこの動作を引き起こすのはなぜですか?? SSMS からその接続の ARITHABORT 設定を変更する方法はありますか? SQL Server 2008 を使用しています。
django - テーブルフィールドから個別の値を選択します
DjangoのORMに頭を悩ませています。私がやりたいのは、テーブルのフィールド内の個別の値のリストを取得することです....次のいずれかに相当します。
(または代わりに)
生のSQLに頼る前に、少なくともDjangoの方法でそれを実行したいと思います。たとえば、テーブルの場合:
id、street、city
1、メインストリート、ハル
2、アザーストリート、ハル
3、Bibble Way、レスター
4、別の方法、レスター
5、ハイストリート、ロンディニウム
取得したい:
ハル、レスター、ロンディニウム。