>>872
ありがとうございます。
そのサイトは質問前に読んでいましたが、具体的にイメージできなかったです。

一人目の回答者の勧めるソースコードの変更は、
不具合が出るリスクがある上に、会社の他の人たちにも使ってもらうので難しいです。

二人目の回答者は、複数のテーブルに保存し、Viewを使ってデータを提供する方法を勧めているようです。
ただ、Viewもテーブルと同様の列数の制限がある、と書いてあるので
「結局、できるの?できないの?どっちなの?」という感じです・・・。
ちなみに、ユーザーはGUIで操作するだけで、クエリーはそれに基づいてプログラム内で生成するので、
ややこしいクエリーになっても対応できます。

三人目の回答者は、
1. 1,600列無くてもいいように再設計する
→できるならそうしたいですが、方法が分かりません

2. 超過した列にはJSON/JSONBフィールドを使う
→JSONは分かりますが、どんな技なのか分かりません

3. スプレッドシートのようなテーブルにする
→これは、spreadsheet_tableが親でspreadsheet_cellが子みたいになっていて、
spreadsheet_cell一つにつき一つのデータが入るようになっていますか?
(行、列)を(1, 1), (1, 2), (1, 3), …と変えていくことでセルの位置を指定できるみたいですね。
ただ、検索などは非常に遅そうですね…。