ホームページ > バックエンド開発 > PHPチュートリアル > [高スコア] 条件に基づいたデータの最後の行の検索に関する質問

[高スコア] 条件に基づいたデータの最後の行の検索に関する質問

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-13 13:34:55
オリジナル
1049 人が閲覧しました

[ハイスコアヘルプ] 条件に基づいたデータの最後の行の検索に関する質問
max(id) と order by desc のどちらが効率的ですか?
他の方法はありますか?

-----解決策--------------------------------
常に Float by による順序を使用してください。
------解決策------------------
id が主キーの場合、同じ
それ以外の場合、id が繰り返されると、前の結果が正しくなくなる可能性があります。
------解決策----------------------
注文できるので、インデックスに使用され、max を走査して比較する必要があります。
------解決策------------------

議論

ID が主キーの場合も同様です
それ以外の場合、ID が繰り返される場合、前の結果は正しくない可能性があります

------解決策---------
話し合う

id が主キーの場合は同じ
それ以外の場合、id が繰り返される場合、前の結果は正しくない可能性があります

------解決策---------
最初の SQL の explian は
1 ,"SIMPLE","collect","index",NULL,"PRIMARY","4",NULL,1,"インデックスの使用"


2 番目の SQL
1, "SIMPLE" ,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"最適化されたテーブルを選択します"

------解決策---------
話し合う

引用:

ID が主キーの場合、同じ
それ以外の場合、ID が繰り返される場合、前の結果は必ずしも真ではない可能性があります


テストしてみたところ、確かに速度に違いはありません

PHP コード

mysql_connect('127.0.0.1', 'root', 'root');
mysql_select_db('収集');

$sql1 = '収集順序から ID を選択……

------解決策------------------
ID は主キーですか?
innodb エンジンの場合、制限 1 による順序の方が効率的です。
myisam で max(id) を選択するだけで、最大 ID はキャッシュに格納されるのと同じになります。これは、Explian ステートメントで Extra 列に最適化されたテーブルが表示されていることが判明したためです。これは select count( と同じです)。 ID)。
ただし、max(id) に加えて他の対応するフィールドを選択したい場合、1 つのステートメントの効率は、order by limit 1 ほど良くない可能性があります。
もちろん、ステートメントは select * from table where id = (select max(id) as id from table)
これは explian に基づいた私の分析です。これを使用してテストできます。
explian を確認してください。自分自身を分析してください。


------解決策------------------単純なカウントクエリの説明 (つまり、explain select count (*) 人々から) 追加のセクションには「最適化されたテーブルの選択」と表示されます。これは、MySQL がテーブル内部から結果を直接読み取ることができるため、
関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート