0

Facebook のようなニュース ティッカー アプリケーションの場合、さらにスクロールすると、古いニュースが表示されます。これで、ニュースが発生すると確実にテーブルに挿入されるため、通常の選択では常に古いレコードが以前に取得されますが、ここでは逆になります。それが行われる方法は、ユーザーが最後までスクロールすると、FB がティッカーに現在存在する最後のニュース ID の ID を持つ Ajax リクエストを送信することだと思います (Firebug では確実に識別できませんでした。FB は負荷を送信します)データの!)、PHP は DB にクエリを実行し、時間列に従って結果セットを反転し、受信した ID を持つレコードに続く次の 5 つのレコードを抽出します。現在、そのようなテーブルは巨大であるため、頻繁に反転すると、DB に多大な負担がかかります。反転せずにこれを達成する方法はありますか?

4

3 に答える 3

3

クエリで ORDER BY 変数を指定しない場合、MySQL は挿入順にレコードを返すことが保証されません。詳細については、この回答を参照してください。最新の行を取得していることを確認したい場合は、挿入時間の列を作成して並べ替える必要があります。

でソートしている場合はtime desc、通常の LIMIT 句を使用して、最初の 5 つのレコード (つまり、最新の 5 つ) だけを要求したり、特定の ID の後の最新の 5 つなどを要求したりできます。

于 2012-07-27T18:49:23.390 に答える
1

はい、これについて非常に抽象的に話していることを覚えておいてください。インデックス付きのコレクションに逆の順序でアクセスしたい場合。

$collection = array(); // Filled through request to server
....
for ($i = sizeof($collection)-1; $i >= 0; $i--) {
    echo $collection[$i]
    .... // execute some action based on access to 
}     

つまり、最後のインデックスから配列にアクセスできない理由はありません。

于 2012-07-27T18:48:40.300 に答える
1

order by最も古いものを最初に取得するようにSQLステートメントで指定します。where id > last_idの後に行を取得するために行いますlast_id

于 2012-07-27T18:51:27.913 に答える