1. ホーム
  2. sql

[解決済み] なぜSQLのANSI-92標準はANSI-89より採用されないのですか?

2022-11-28 09:26:16

疑問点

私が働いてきたすべての会社で、人々はまだ ANSI-89 標準で SQL クエリを書いていることがわかりました。

select a.id, b.id, b.address_1
from person a, address b
where a.id = b.id

は、ANSI-92 標準よりも

select a.id, b.id, b.address_1
from person a
inner join address b
on a.id = b.id

このような極めて単純なクエリでは、読みやすさに大きな違いはありませんが、大規模なクエリでは、結合条件をグループ化してテーブルをリストアップすることで、結合に問題がありそうな箇所をより簡単に確認でき、すべてのフィルタをWHERE句で維持できることがわかります。 もちろん、Oracle の (+) 構文よりも外部結合のほうが直感的であることは言うまでもありません。

私はANSI-92を人々に広めようとしていますが、ANSI-89に対してANSI-92を使用することで、何か具体的なパフォーマンスの利点があるのでしょうか。 しかし、私たちがここで使用している Oracle セットアップでは、EXPLAIN PLAN を使用することができません - 自分のコードを最適化しようとしている人たちを見たくはないでしょう?

どのように解決するのですか?

Peter Gulutzan と Trudy Pelzer による「quot;SQL Performance Tuning"」によると、彼らがテストした 6 つか 8 つの RDBMS ブランドのうち、SQL-89 と SQL-92 形式の結合の最適化やパフォーマンスには違いがありませんでした。 ほとんどの RDBMS エンジンは、クエリを最適化または実行する前に構文を内部表現に変換するため、人間が読みやすい構文に違いはないと考えることができます。

私はまた、SQL-92構文を伝道しようとしています。 SQL-92 が承認されてから 16 年が経過し、そろそろ人々が使い始める頃です。 そして、すべてのブランドの SQL データベースがこれをサポートするようになったので、非標準の (+) Oracle の構文や *= Microsoft/Sybase の構文。

開発者コミュニティの SQL-89 習慣を断ち切るのがなぜそんなに難しいかというと、本や雑誌の記事、または別のコードベースから古い例を使用してコピー&ペーストでコーディングするプログラマの大きなピラミッドの底辺があるとしか思えませんし、これらの人々は新しい構文を抽象的に学ぶことはありません。 ある人はパターンマッチを行い、ある人は丸暗記で学びます。

しかし、以前よりも頻繁に SQL-92 構文を使用する人を徐々に見かけるようになりました。 私は 1994 年からオンラインで SQL の質問に答えています。