次のSQL文の順序は、ほとんどの場合から最も効率的ではないものは何ですか?列内の最初および/または最後のレコードを取得する
注:(すなわち、代わりにLIMIT 1
の適切な場所にTOP 1
を使用)構文は、言語に依存しないとします。 table_name
が表の名前であり、column_name
が列の名前であり、id
が主キーを持つ列の名前であり、表に数万のレコードがあるとします。
SELECT FIRST(column_name) FROM table_name
SELECT column_name FROM table_name LIMIT 1
SELECT column_name FROM table_name WHERE id=1 --assumes the first id is 1
SELECT column_name FROM table_name WHERE id=(SELECT MIN(id) FROM table_name)
と
SELECT LAST(column_name) FROM table_name
SELECT column_name FROM table_name ORDER BY id DESC LIMIT 1
SELECT column_name FROM table_name WHERE id=(SELECT COUNT(id) FROM table_name) --assumes no values have been skipped
SELECT column_name FROM table_name WHERE id=(SELECT MAX(id) FROM table_name)
私はどのようにベンチマークこれらのステートメントをするか分からないけど、私の推測は、最初のレコードを取得し、3のために2、3、1、4 2 1、最後のレコードを取得するための4。
どのデータベースですか? –
うん。それについて考えなかったMySQLを使用していますが、今までは 'FIRST()'が存在するかどうかは確認していません。しかし、私の好奇心はピークに達していますので、 'FIRST()'や 'LAST()'関数、 'LIMIT'演算子で十分です。 –
@marc_s:SQLiteとPostgreSQLも 'LIMIT'を使用していますが、私はFIRSTやLASTに慣れていません。指定されたデータベースがないと、MySQLまたはSQL ServerがAFAIK SQL Serverに制限されているとは限りませんが、MySQLは合理的な推測になります。 –