問題タブ [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.
mysql - MySQL が複数列インデックスを使用していない
主キーの一部であり、すべての列に外部キー インデックスを持つ where 句の列を含むクエリがあります。
c_id
( 、tg_id
、 )に複数の columnn インデックスも定義しましdt_id
たが、EXPLAIN は、で外部キー インデックスを使用していることを示しています。c_id
agg_ei_comdm_fk_idx は外部キー インデックスであり、comp_uuid は ( , , )c_id
の複数列インデックスです。c_id
tg_id
dt_id
誰かがなぜこのようなことが起こっているのか説明できますか
編集:テーブルを作成する
mysql - MySQL: イベント ログを時系列に効率的に変換する
関心のあるイベントの開始時刻と終了時刻を記録したテーブルがあります。
1 つの列が時間インデックスで、別の列がその時点で進行中のイベントの数である「時系列」テーブルを作成する方法を探しています。サブクエリとジェネレーターでそれを行うことができます:
それを行うためのより効率的な方法はありますか?この方法では、時間インデックスごとにサブクエリが必要です。たとえば、「event_log」レコードごとに 1 つのサブクエリを必要とする方法はありますか? 私の本当の問題には、500k のタイム インデックス エントリと 1k のイベントがあります。思ったよりも少し時間がかかります (約 90 秒)。
「ジェネレーター」スニペットはhttp://use-the-index-luke.com/blog/2011-07-30/mysql-row-generatorからのものです。より大きな問題には、64k バージョンや 1M バージョンなどのより大きなジェネレーターの 1 つが必要になることは明らかです。
sql - SQL ビューで選択されていない列は実行されますか?
これに対する答えを検索するための適切なキーワードを思いつくことができなかったので、既に答えられていたら申し訳ありません。
次の SQL ビューを検討してください。
次のクエリを実行すると、サブクエリが実行されますか、それとも SQL Server がクエリを最適化しますか?
私はこれをパフォーマンスの観点から見ています。たとえば、ビューにかなりの数のサブクエリがある場合です (内部選択が大きなテーブルを参照している場合、集計には時間がかかる可能性があります)。
私は SQL Server 2008 R2 を使用していますが、答えが 2012 または MySQL で異なるかどうかを知りたいです。
ありがとう。
mysql - MySQL: この例では、ルーチンを使用して一致を見つける方がはるかに高速ではありませんか?
このクエリの実行には0.0002 秒かかります。
locID は明らかに INDEX です。
この他のクエリはルーチンを使用し、実行に0.0005 秒かかります ( 30296を返します)。
では、この複合クエリの実行に1.7912 秒かかるのはなぜでしょうか? 本来あるべき以上の方法のようです:
これが役に立つと思われる場合に備えて、これらはテーブルとルーチンです:
mysql - SQL呼び出しを最適化するためのGROUP BYの代替
非常に遅い次の SQL ステートメントがあります。それは600-800msまで変化します!
最適化する方法を探していますが、最適なルートが正確にはわかりません。私のデータベースはかなり大きく、entries
テーブルには 400,000 行、devices
テーブルには 90,000 行あります。
SQL ステートメント
貧弱なハードウェアで実行しているため、またはステートメントが正しくないため、またはテーブルを正しく構造化していないため、この SQL ステートメントは遅いですか? どんな考えでも大歓迎です!
声明の目的
すべてのデバイス メーカーのリストと、そのメーカーがエントリ テーブルに表示された回数の関連カウントを取得します。
テーブル構造
デバイス
エントリー
また、別のデータベースを調べています。このデータベースが将来的に非常に高速な読み取り/書き込みを必要とすることを考えると、Redis のようなものが役に立ちますか?
mysql - MySQL log-queries-not-using-indexes と UNION 誤検知またはエラー?
次のパラメータを使用してスロー クエリ ログをアクティブにします。
現在、MySQL はインデックスなしでクエリのみをログに記録しているようです
これはログのサンプルです
ただし、このクエリは最適化されています。
MySQL のドキュメントに次の警告が表示されます。
しかし...
- ログに記録されたクエリが正しいかどうか、または修正できる最適化の問題があるかどうかわかりません
- このクエリが誤検知の場合、mysql がログに記録しないようにする方法はありますか?
MySQL は、UNION を含むすべてのクエリをインデックスなしのクエリとしてログに記録しているようです。それについて検索しましたが、何も見つかりませんでした。
それについてのアイデアはありますか?よろしくお願いしますミケーレ
mysql - FINd_IN_SET と IN 句の使用 MYSQL ストアド プロシージャ
以下のようなストアドプロシージャがあります
ここTag
にInteger
コラムがあります。
コンマ区切りの値を文字列としてストアド プロシージャに渡すのにうんざりしましたが、機能しません。次に、以下のようなストアドプロシージャを使用しました
これは非常にうまく機能します。唯一の問題は、テーブルが非常に大きいことです。何百万もの行があり、FIND_IN_SET を使用すると、直接 SQL ステートメントを実行する場合に IN に比べて時間がかかりすぎます。
使用するのに最適なパフォーマンス最適化オプションは何ですか?
IDを整数に変換し、IN句の準備ができて解析できる分割関数はありますか? それが最良の選択肢になると思います。提案やアイデアはありますか?
sql-server - SQL Server クエリの最適化?
次のクエリがあります。
...そして驚いたことに、許容できる時間内に結果が返されません。実稼働環境で初めて実行したときは、実行に 3 秒ほどかかりました。現在、タイムアウト (C# アプリケーション内では 30 秒) まで実行されます。
主な目的は、「トラッカーからの最新の場所と、ユーザーのデバイスに関する情報を 2 分間さかのぼって提供する」ことです。
このクエリの最適化に関するヒントはありますか?
ありがとう!
インデックス: どこでも句の列 (ReceivedTime、OSType、Notify)。
実行計画については、とても大きなことで、私にはあまりなじみがありません。ここに貼り付けるべきですか?:)