varchar やその他の可変長データが保存されていないテーブルから読み取る方が、一般的に高速でしょうか? MySQL では、行がディスク上のどこに格納されるかを正確に計算できるため、これは高速です。
2 に答える
TEXT
この質問は、単一のフィールド タイプしかサポートしていないため、SQLite のコンテキストでは意味がありません。ここでは、「固定幅」と「可変長」の区別はありません。
SQLite ではフィールドを特定の型として定義できますが、これが行うことは (せいぜい) あいまいなデータを格納するときに使用する型のフィールドの優先順位を設定することだけです (たとえば、"3" を INTEGER、REAL、またはテキスト)。タイプに関係なく、任意の種類のデータを任意の SQLite フィールドに格納できます。
特にCHARとVARCHARに関連して、http ://www.sqlite.org/datatype3.htmlは次のことを示しています。
列の宣言された型に文字列「CHAR」、「CLOB」、または「TEXT」が含まれている場合、その列には TEXT アフィニティがあります。VARCHAR 型には文字列 "CHAR" が含まれているため、TEXT アフィニティが割り当てられていることに注意してください。
SQLite は可変長レコードのみを使用するため、行がたまたま同じ長さである場合、固定幅ルックアップの最適化を実装していないと思います。
Dave が指摘したように、テキストを INT フィールドに格納することもできます。SQLite は data を決して切り捨てないため、これは SQLite が INT のような一見固定幅の列にも可変長データを格納できることを意味します。したがって、固定幅のルックアップの最適化を実装することは不可能です。