0

私がここで尋ねた別の質問は、別の質問を引き起こしました。私はこのクエリを持っています

SELECT `Qty`, `Invt`, `ClassNr`, `SubPartCode`, `Description`, `DesignCode`, `Measure`, `Remark`, `PartMnem`
FROM (`loodvrij_receptuur` lr)
JOIN `loodvrij_artikel` la ON `la`.`PartCode` = `lr`.`SubPartCode`
WHERE `lr`.`PartCode` =  'M2430A'
ORDER BY `SubPartCode`, `Qty` desc

私が抱えていた問題は、CodeIgniter よりも phpmyadmin の方が高速に実行されることでした。そして、phpmyadminの自動追加に関係していることがわかりましたLIMIT 30

しかし、私が疑問に思っているのは、クエリが 27 の結果しか生成しないということです。LIMIT 30クエリを高速化するにはどうすればよいですか? 30 以上の結果を返すクエリを で高速化できることは理解できますがLIMIT 30、 を追加すると、結果が 30 未満のクエリはどのように高速化されるのでしょLIMIT 30うか?

4

2 に答える 2

1

制限 30 は、クエリの最後にのみ有効になると想定していると思います。姓が T で始まり、ニューヨークに住んでいる電話帳のすべての人を見るように頼んだ場合、50,000 人の名前を取り出して、ニューヨークにいる人を調べる必要があります。30人だけ必要だと言ったら、50,000人の名前を引き出す必要はなく、ニューヨークの人々を見て、名前がTで始まる最初の30人を選ぶことができます.

SQL クエリは通常、最も効率的な方法で解決されるため、LIMIT 30 を追加することで、内部の状況が変化し、クエリがより迅速に実行されるようになります。

于 2012-06-07T13:35:03.810 に答える
0

問題は、クエリが返す結果の数ではなく、クエリが検索する必要があるアイテムの数です。LIMIT 30 では、最初の 30 件の結果が得られたら実行を停止する必要があります。

結果を制限しない場合、SQL はベースの終わりに到達するまで検索を続けます。そのため、結果が 30 件に満たない場合でも、より多くの作業を行う必要がありました。

私は自分自身を明確にするかどうかわかりません。下手な英語で申し訳ありません。

于 2012-06-07T13:39:42.377 に答える