問題タブ [query-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.
php - データを処理するための MySQL と Web サーバー
MySQL でデータを処理するか、PHP や Python のようなサーバー言語でデータを処理する方が速いか疑問に思っていました。ORDER のようなネイティブ関数は、インデックス作成、キャッシュなどにより MySQL でより高速になると確信していますが、実際にはランクを計算します (複数のエントリを同じランクとして返すタイを含む)。
サンプル SQL
サーバ
SELECT TORCH_ID FROM torch_info ORDER BY score DESC
...単に a を実行してから、Web サーバー上の PHP のランクを把握するのとは対照的です。
php - Mysql がインデックスを使用していない
「explain」を使用して、クエリがデータベースのすべての行にヒットする理由を確認していますが、その理由がわかりません。
誰かが見て、私が欠けているもののヒントを教えてもらえますか?
私のデータベースは MyISAM で、Mysql 5.1、PHP5 を使用しています。
ここに私のテーブルがあります:
これが私のクエリです:
そして最後に、私の説明...
sql - 一般的なSQLモデル最適化の質問(MySql)
この種のDBモデルを最適化する最良の方法があるかどうかを知る必要があります。
これが私のテーブルです:
特定の時間範囲内の特定のカテゴリからのすべての投稿を表示する必要があります(時間は「コメント」からのものです)。時間範囲は固定されています(1日、1週間、1か月、1年)。これが私が持ってきたものです:
10kの投稿と500kのコメントをサポートしたいとしましょう...これを最適化する方法はありますか(インデックスを使用する以外に)?ストアドプロシージャ、一時テーブルを使用したクエリを使用して、「事前計算された」フィールドをどこかに追加しますか...?
どうもありがとう!:)
optimization - postgresの毎日のクエリ分析ツール
最も遅く、最も頻繁に使用される遅いクエリについてレポートできるpostgresビュー/関数/ツールを知っている人はいますか?これはすべてのシステム管理者にとって非常に役立つと思います。ありがとう!
oracle - Oracle で動的検索クエリを最適化するにはどうすればよいですか
10 以上のデータベース テーブルにまたがる動的検索を実行するストアド プロシージャを作成しています。各テーブルに数百万のレコードがあり、動的な検索パラメーターのセット*があるため、手順を最適化するのに苦労しています。
この種のクエリを作成するための「ベスト プラクティス」はありますか? たとえば、文字列を使用して動的クエリを作成したり、IF THEN .. ELSE ステートメントなどの膨大なリストを使用したりしますか? 誰かが簡単な例を提供したり、役立つ文献を教えてくれませんか? これは、私が開発しているストアド プロシージャの疑似コードです。これは、パラメーターのコレクションと ref カーソルを受け入れます。
*「検索パラメーターの動的セット」とは、パラメーターのコレクションを渡すことを意味します。呼び出し元が 1 つだけを検索したい場合、呼び出し元に 20 個のパラメーターを渡すよりも簡単だと思いました。
sql - 最適なクエリを作成して、1つのテーブルにのみ存在するレコードを検索します
したがって、この連絡先管理システムを構築しているとしましょう。USERテーブルとCONTACT_INFOテーブルがあります。すべてのユーザーに対して、0個以上のCONTACT_INFOレコードを持つことができます。私が定義した方法では、CONTACT_INFOテーブルに、関連するUSERレコードを指す外部キーを設定しました。
CONTACT_INFOレコードを持たないすべてのUSERレコードを検索したいと思います。
私はこれができることを期待しています:
私の懸念は、テーブルが大きくなるにつれて、このクエリのパフォーマンスが大幅に低下する可能性があることです。
私が遊んでいるアイデアの1つは、USERテーブルにCONTACT_INFOレコードがあるかどうかを示す列を追加することです。また、CONTACT_INFOにレコードを挿入するときに、DBMSがレコードが存在することを確認する必要がある場合、確認のためにそのレコードにすでにアクセスしているので、CONTACT_INFOレコードを更新するときに更新するべきではないのではないかと思いました。コストがかかり、パフォーマンスの面で。
いつものように、フィードバックは大歓迎です。
mysql - 2 つの大きなテーブルに対する単純なクエリの最適化
友達が最も閲覧したページを表示できる機能を提供しようとしています。friends テーブルには 570 万行、views テーブルには 530 万行あります。現時点では、これら 2 つのテーブルに対してクエリを実行し、ある人の友人によって最も多く閲覧された 20 のページ ID を見つけたいだけです。
私が今持っているクエリは次のとおりです。
そして、説明は次のようになります。
ビュー テーブルには (user_id, page_id) の主キーがあり、これが使用されていることがわかります。友情テーブルには、(receiver_id、creator_id) のプライマリ キーと、(creator_id) のセカンダリ インデックスがあります。
group by と limit を指定せずにこのクエリを実行すると、この特定のユーザーに対して約 25,000 行になります。これは一般的な値です。
最新の実際の実行では、このクエリの実行に 7 秒かかりました。これは、Web アプリで適切な応答を得るには長すぎます。
私が疑問に思っていることの 1 つは、セカンダリ インデックスを (creator_id、receiver_id) に調整する必要があるかどうかです。ただし、それによってパフォーマンスが大幅に向上するかどうかはわかりません。この質問への回答に応じて、今日試してみます。
クエリを書き直して非常に高速にする方法がわかりますか?
更新:さらにテストを行う必要がありますが、データベースでグループ化とソートを行わず、後でルビーで行うと、私の厄介なクエリがうまく機能するようです。全体的な時間ははるかに短く、約 80% 短縮されているようです。おそらく私の初期のテストには欠陥があったのでしょう - しかしこれは間違いなくもっと調査する必要があります. それが本当なら、wtf は Mysql を実行していますか?
sql - Hibernate に単純な更新を実行させる。膨大な選択と更新の代わりに
最初に質問を設定しましょう。
私が持っているのは、Customer、Address、Order、OrderItems の 4 つ以上のテーブルです。それぞれが Hibernate Annotations を使用してマップされ、Spring DAO/Services レイヤーを介してアクセスされます。
私がやろうとしているのは、重複した顧客をまとめることです。したがって、実際に行う必要があるのは、顧客 B に関連付けられたすべての注文と住所であり、顧客 A を指すように customer_id 外部キーを更新する必要があります。次に、顧客 B に無効ビットを設定する必要があります。
これらの単純なクエリをデータベースに送信する代わりに、Hibernate はおかしくなり、大量の選択と更新のクエリを発行します。特に、注文に関連付けられたすべての注文項目を選択します (これは 定義されEAGER
ており、この点は変更できないためです)。更新前に選択を取得して停止するために、次のような通常の上に休止状態エンティティ注釈を追加しようとしましたjavax.persistence.Entity
:
これは、テーブル内の単一のアイテムのみを更新する単純なクエリを除いて、何の影響もないように見えました。
次の休止状態基準を使用してオブジェクトを取得します。
次に、すべての住所と注文オブジェクトを顧客 B から顧客 A に移動し、
両方の顧客オブジェクトで。これにより、関連付けられたすべてのオブジェクト (つまり、OrderItems、Products、ProductType、ProductPricingTmpl など) を取得する大量の select ステートメントが作成されます。
これらの選択を削除する必要があります! それらがなければ、クエリは正常に見えて効率的です! Update 出力クエリは完璧で動的です。
何か案は?
sql - SQL: LEFT OUTER JOIN のヘルプ
私の SQL は に基づいて結果を制限していないようprice
です。
以前の投稿SQL: Help me optimize my SQLで、LEFT OUTER JOIN を使用する必要があると指摘されました。
ただし、価格が 500000 未満の住宅は引き続き表示されます。
理解できない。正確にそのフィールドを制限する WHERE 条件があるのに、上記の SQL が価格が 500000 未満の住宅を表示するのはなぜですか。
ご協力いただきありがとうございます。
私がしたいこと
PRICE
X と Y ... または> Z などの基準に基づいて、home_photo のある家とない家の両方を表示したいのですがSQFT
、これらの基準は、ある家とhomes
ない家の両方に適用する必要があります。home_photo
これは正しいです?
php - このmysqlクエリを最適化する方法はありますか?
これがクエリです。私がGROUP_CONCATを使用するものを取得するためのより良い方法があるかどうか、またはそれがこのデータを取得するための妖精の良い方法であるかどうか、私は主に興味があります。次に、それを分解し、ID /名前を配列に入れてから、forループを使用してそれらをエコーアウトします。
クエリの説明はこちら