私は2つの非常に大きなテーブルを持っています。それらを「著者」と「記事」と呼びましょう。'articles'テーブルのすべての行は、'AuthorID'フィールドの値で表される単一の著者に関連付けられています。
特定の基準に一致する一連のライターと、記事の「DatePublished」フィールドの値順に並べられた、すべてのライターに関連付けられている最初の記事を表示するページがあります。
これは現在、複数のクエリを実行することで実現されていますが、特に多数の作成者に対して実行すると、非常に遅くなります。私はこのテーマの専門家ではありませんが、現在の混乱よりもはるかに最適化された単一のステートメントでこのデータを取得する方法があると確信しています。
別の言い方をすれば:(すべての関数呼び出しを単一のSQLクエリと考えてください)
私たちが今持っているもの:
$authors = get_some_authors($criteria);
for each($author in $authors) {
$author->lastArticle = get_latest_article_by_author($author_id);
}
私たちの必要なもの:
$authors_with_last_articles = get_some_authors_and_their_latest_articles($criteria);
MS SQLServer9.0を使用しています。
問題を正しく説明できれば幸いです。よろしくお願いします。