0

私のクエリは広範囲に最適化できると確信していますが、頭のてっぺんからどれだけ離れているかはわかりませんでした。

私が持っているのは、メンバーのために進行中のコンセプトのような投稿/コメントです。特定の人や全員と共有することを選択できる場所。したがって、これから、クエリが重複した結果を引き起こす可能性があることがわかります(そもそもそれを機能させることができれば)。ユーザーIDを見つけながら、他の場所で言及されている潜在的なIDとともに、個別の「ciID」を取得する必要があります。メンバーのIDは、3つの異なる理由で3つの異なる列に格納されます。

mIDはメンバー自身であり、sharedWithとwhos_withはちょっと自分自身のために話します。IDをsharedWithとwhos_withlikeに格納し1111:2222:3333ますが、全体として、共有されているメンバーIDの3つの列すべてを検索し、whos列を検索して、IDが配列内の関数を通過したすべての結果を確実に取得する必要があります。ループを介してクエリを作成した後、次のようなクエリを思い付きます。

select DISTINCT(ciID),* from user_posting 
where (mID = 21 OR sharedWith LIKE '%21%' OR whosWith LIKE '%21%') 
or (mID = 22 OR sharedWith LIKE '%22%' OR whosWith LIKE '%22%') 
or (mID = 45 OR sharedWith LIKE '%45%' OR whosWith LIKE '%45%')
limit 1

どこかに私は気づいていない構文エラーがあります、そして私は私を助けるために一対の目が必要です

4

1 に答える 1

3

これは間違いなく間違っています:

select DISTINCT(ciID),* from user_posting 

そのはず:

select DISTINCT(up.ciID), up.* from user_posting up 

しかし、それが期待される結果を返すかどうかはよくわかりません。

テーブル構造を再設計する必要があると思います。LIKEで選択しても、それほど適切にスケーリングされません。

于 2012-07-04T08:47:04.363 に答える