1

私のPhpMyAdminデータベースには、9つのテーブルがあります。これらの表のうち8つは、現時点で私に関連しています。クエリを十分に迅速に実行したいのですが、テーブルの設計/構造が最も効率的かどうかはわかりません。テーブルを別のテーブルとマージしたり、別のブリッジテーブルを作成したりする提案はありますか?また、次のテーブルからのブリッジ結果を表示するクエリの作成に苦労semesterしています:、、、、、、、、、?scheduleoffice_hoursfacultysectionmajor_minormajor_class_brclass

テーブル構造

基本クエリ-クラスの詳細を表示します

SELECT  class_name, class_caption, class_credit_hours, class_description
FROM class  
4

2 に答える 2

1

「十分に迅速に実行されるクエリ」

INSERTまたはSELECT?

INSERT / UPDATEを高速にしたい場合は、n次に正規化します。

SELECTを高速にしたい場合は、非正規化します(もちろん、INSERTのUPDATEは複雑で遅くなります)

メインテーブル(スケジュール?)のレコード数が10,000未満で、適切なRDBMSである場合は、おそらく可能な限り高速に実行されています。

通常、パフォーマンス調整プロセスには以下が含まれます

  1. ワークロードの特定(通常はどのクエリを実行しますか)
  2. ベースラインの取得(実行にかかる時間)
  3. チューニング(インデックスの追加、デザインの変更)
  4. 繰り返す

したがって、実際には、どの種類のクエリの実行が遅いか、あるいはどのテーブルでどのような成長が期待できるかを把握する必要があります。

「ブリッジの結果」が何を意味するのかわかりません。物理図に従ってテーブルを結合するクエリを作成するとどうなりますか?エラーまたは予期しない結果?

于 2012-11-06T03:45:50.320 に答える
1

スタートは次のとおりです。

select *
from 
schedule 
inner join semester 
on schedule.semester_id = semester.id
inner join office_hours
on office_hours.id = schedule.???

office_hoursがスケジュールとどのように相関しているかは明確ではありませんか?

于 2012-11-06T05:15:11.087 に答える