問題タブ [database-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.
database - いつ、何を使用して列にインデックスを付けるかをどのように知ることができますか?
さまざまなORMのドキュメントでは、インデックスなどを作成する方法を常に提供しています。効率を上げるために適切なインデックスを作成するように常に言及しています。 ORM。インデックス(PK以外)についての私の理解は基本的に次のとおりです。LIKE
列の内容に基づいてクエリ(つまり検索)を実行する場合は、その列に全文インデックスを使用する必要があります。インデックス(主に効率に関する)に関して他に何を知っておくべきですか?玄関先に知識の世界があるような気がしますが、その下に巨大な折り畳まれたマウスパッドが詰まっているので、通り抜けることができません(なぜそう言う必要があると感じたのかわかりませんが、ソファを提供してくれてありがとう)。
google-app-engine - GAE Datastore は熱心なフェッチをサポートしていますか?
本とその著者のリストを表示したいとしましょう。従来のデータベース設計では、1 つのクエリを発行しBook
て、関連するAuthor
テーブルだけでなくテーブルからも行を取得していました。これは、恐ろしいN+1 選択の問題を回避するために行われます。レコードが遅延して取得された場合Author
、私のプログラムは著者ごとに個別のクエリを発行する必要があります。おそらくリストにある本の数と同じ数のクエリです。
Google App Engine Datastore は同様のメカニズムを提供していますか、それとも N+1 選択の問題はこのプラットフォームではもはや関係ないものですか?
database - 最適なデータベース構造 - 空のフィールドを持つ「より広い」テーブルまたはより多くのテーブル?
追加のデータをデータベースに収める必要があり、既存のテーブル (table_existing) を変更するか、新しいテーブルを作成するかを選択できます。
現在の table_existing は次のようになります。
オプション (A)
オプション (B)
コンテキスト: SP と SV の組み合わせによって、入力されるフィールドの「数」が決まります。たとえば、(XX, 1) には 2 つのフィールドがあります。(YY, 2) には 3 つのフィールドがあります。
オプション (A) を使用すると、「より広い」テーブルに多くの空/NULL 値が含まれることになります。
オプション (B) を使用する場合、基本的にはより多くのテーブルを作成します... SP、SV の「各」組み合わせに対して 1 つ - おそらく合計で 4 ~ 5 になります。ただし、それぞれに適切な数のフィールドが完全に入力されます。table_existing も変更されます。
速度の観点から、より最適なデータベース構造はどれですか? 保守性の観点からは、オプション (B) の方がよいのではないかと思います。
編集1
2 つのオプションのどちらも、アプリケーションで最も重要な/頻繁に使用されるテーブルにはなりません。
オプション (B) では、データが分割された後、データを結合する必要はまったくありません。XX_1 のフィールドが必要であることがわかっている場合は、そのテーブルに移動します。
多くの未使用の値を持つ1つの大きなテーブルを持つことと、同じデータをより多くのテーブルに分割することの長所と短所があるかどうかを理解しようとしています。テーブルの数が増えると、データベースのパフォーマンスが低下しますか?
php - 次のSQLクエリのどれがより高速になりますか?2つのテーブルの結合または連続するクエリ?
ここに2つのテーブルがあります。
どこITEMS.OWNER = USERS.ID
私はそれぞれの所有者の名前でアイテムをリストしています。このために、両方のテーブルで結合を使用するか、すべてのアイテムを選択してそれらをループし、SQLクエリを作成してそのitmes所有者のタプルを取得することができます。それは次のようなものです:
JOINを使用した1つのSQLと1x20の単一テーブルSQLクエリ
スピードの観点から、どちらがより良いアプローチでしょうか?ありがとう
sql-server - アドバイスが必要: 大規模データベース向けの SQL Server DB アーキテクチャ
こんにちは、みんな!
私のクライアントは現在、毎日 300 万から 400 万の挿入を実行する SQL Server データベースを持っています。現在のDBは奇妙にレイアウトされていますIMHO:着信データは「現在の」テーブルに移動し、夜間のレコードは対応する月次テーブル(つまり、MarchData、AprilData、MayDataなど)に移動されます。これは現在のテーブルの正確なコピーです(スキーマ的にはi平均)。読み取りはすべての月次テーブルと現在のテーブルを UNION したビューから行われ、挿入と更新は現在のテーブルに対してのみ行われます。データを 13 個のテーブルに分割したのは、これらすべてのテーブルが個別のデータ ファイルを使用し、それらのデータ ファイルが 13 台の物理ハード ドライブに書き込まれているという事実によるものだと説明されました。したがって、各テーブルには独自のハード ドライブが割り当てられ、おそらくビューのパフォーマンスが向上します。私は何を
私は、このアプローチが本当に最善のアプローチなのだろうかと思っていました。それとも、別のアプローチを検討できますか? データベースは約 300 ~ 400 GB で、1 日あたり 1.5 ~ 2 GB ずつ増加していることに注意してください。時折、12 か月以上前のレコードを別のデータベース (アーカイブ) に移動します。
どんな洞察も高く評価されます。
sql - 異なるデータベース内の類似したスキーマを持つ2つのテーブルを比較するクエリを最適化する
異なるデータベースに類似したスキーマを持つ2つの異なるテーブルがあります。これら2つのテーブル間でレコードを比較するための最良の方法は何ですか。最初のテーブルに存在するレコードを見つける必要があります。その対応するレコードは、いくつかのwhere句を使用して最初のテーブルからレコードをフィルタリングする2番目のテーブルには存在しません。これまでのところ、私はこのSQL構造を持ってきました:
これを行うためのより良い方法はありますか?
上記のクエリは問題ないように見えますが、クエリの最初の部分では結果セットが大幅に減少するため、クエリの最初の部分の条件を評価せずに行ごとの比較を行っていると思われます。これは起こっていますか?
php - データベース設計の最適化に関する 2 つの質問
1) mysql エンジンでは、MyISAM の方が優れていますか、それとも InnoDB ですか?
2)マルチカテゴリの投稿を追加できるように cms をプログラミングしたいのです が、いくつかのクエリでパフォーマンスを向上させるためにデータベースをどのように設計する必要がありますか?
PHPで、たとえば= 1のカテゴリの投稿を一覧表示するにはどうすればよいですか?
ありがとうございました
mysql - MySQL は cron ジョブを使用してテーブルを作成するか、ビューを使用します
多数の複雑なクエリがあり、その結果は MySQL ビューに保存されていました。問題は、MySQL ビューのパフォーマンスが低下することです。
ビューに入力されたのと同じデータを標準テーブルに入力する cron ジョブを設定しました。
現在、cron が設定されたuser_reports
テーブルに対してクエリを実行すると、同等のビューと比較して、クエリにかかる時間はほぼ 10 分の 1 になります。
これは一般的なアプローチですか?明らかに、CRON ジョブが実行されるたびにサーバーに何らかの負荷がかかり、データがライブで利用できないことを意味します。
クエリにかかる 時間
user_reports
= 0.002 秒クエリにかかる時間= 0.018 秒view_user_reports
つまり、実行に 0.018 秒かかるクエリは、ビューに格納するのではなく、アプリケーション コードから実行する必要があるのではないでしょうか? 私はそれがcron駆動の方法と同じようにスケーリングするとは思わないが.
mysql - mysql の最適化
私はウェブサイトを運営しており、ウェブサイトで多くのユーザーにリーチしています。今私が直面している問題は、着信メッセージと発信メッセージ用のテーブルが 1 つしかないことです。このメッセージ テーブルのサイズが 200 万を超えると、Web サイトは非常に遅くなります。
この問題の解決策を教えてください。
私のウェブサイトはパキスタンにSMSを送信しています
私のサーバー構成は 1 GB RAM 786 GHz プロセッサ 200 GB ハードです
mysql - 外部キーにするためだけに列にインデックスを追加する価値はありますか?
invitations
データベースにテーブルがあり、テーブルの列の外部キーであるfrom
と列があります。to
userId
users
たとえば、ユーザー#1がユーザー#2に何かをするように招待した場合、invitations
テーブルでfrom
は1になり、to
2になります。
to
次のようなwhereステートメントで列を使用します。
ただし、このfrom
列がWHEREステートメントで使用されることはありません。
私が読んだことから、WHEREステートメントで使用される列にのみインデックスを追加する必要がありますが、常に外部キーを作成する必要があることも読みました。
from
外部キーを追加するためだけにインデックスを作成することは意味がありますか?