1

私が作業している状況 は、ユーザープロファイルのビューを記録し、そのデータは後でSELECTステートメントのみを使用してさまざまなカスタム方法で使用されます。

profile_viewsフィールドview_id、、、view_dateおよびを含むテーブルがある場合、多数のIDを許可するために、自動インクリメントを使用してas INT(25)を使用することprofile_idを提案します。は、ユーザーのプロファイルの一般的なフィールドを含むテーブルからview_idprofile_idに対応します。profile_idprofiles

基本的なselectステートメントは、「SELECT v.view_id FROM profile_viewsv WHERE v.profile_id='125'」になります。

テーブルが数十万行になったとしても、SELECTステートメントの速度が必要です。

私の質問は次のとおり です。->インデックスを追加するのも賢明profile_idですか?それは「where」句をスピードアップするのに役立ちますか?-> 1ページに多数のプロファイルの詳細を表示したい場合はprofile_id、テーブルに外部キー制約をインデックス付けして作成する必要がありますprofilesprofile_id

(mySQL 5. * INNODBを使用)

提案をありがとう!スケーラビリティに最適なものがわからない(または、おそらく私はすべて間違っている)。

4

2 に答える 2

3

最高のパフォーマンスを得るために、カバーリングインデックスを追加できます。

SELECT v.view_id 
FROM profile_views v 
WHERE v.profile_id='125';

たとえば、上記のクエリの場合、カバーするインデックスを追加できますKEY(profile_id, view_id)

こちらをご覧ください

于 2012-07-30T10:49:28.310 に答える