2

私はテーブルの人々を持っています

    Name  Id            Age Sex  Country    
    Ankit ankitgautam24 17   M   India
    John  john321       71   M   France
    Will  willsmith     42   M   USA
    Arti  artisingh     67   F   Pakistan
   .....3.5 million records......

そして別のテーブル制限

Country        Sex      Allow
France         F       Allowed
France         M       Restricted
India          F       Restricted
India          M       Allowed
Pakistan       F       Restricted
....for each country ......

今、私はそれをテーブル Useraccount に変換したいと思います。

    Name  Id            Age Sex  Country  Allow   
    Ankit ankitgautam24 17   M   India    Allowed
    John  john321       71   M   France   Restricted 
    Will  willsmith     42   M   USA      Allowed
    Arti  artisingh     67   F   Pakistan Allowed
   .....hundreds of thousands of record......

これらの 2 つのテーブルを最もスマートな方法で 1 つに結合するための正しいクエリは何ですか?

4

2 に答える 2

3

必要なのはシンプルで簡単な だけで、JOINそれほど時間はかかりません。

SELECT p.Name, p.Id, p.Age, p.Sex, p.Country,
       r.Allow 
FROM People p 
INNER JOIN Restriction r ON p.Country = r.Country

JOINこれがより効率的な方法ですが、より効率的にするには、2 つのテーブルをCountry名前で結合するのCountryIDではなく、この列でそれらを追加して結合することをお勧めします。したがって、テーブルPeopleは次のようになります。

  • Name.
  • Id.
  • Age.
  • CountryId制約外部キー参照Restrictionsテーブル ( CountryId)。

そしてRestrictionsテーブル:

  • CountryID.
  • IsAllwoed.
于 2012-04-22T08:00:40.543 に答える