テーブルに、最初は varchar(255) だった列がありますが、設計変更により、現在は varchar(1536) = 1024 + 512 になっています。このフィールドを検索したりインデックスを作成したりするつもりはありませんが、パフォーマンスを最適化する場合、この値を varchar 以外の別のデータ型で保存するのは理にかなっていますか?
ベストアンサー1
他の人が言ったように使用する必要がありますTEXT
が、TEXT または BLOB を使用するたびに重要なアドバイスがいくつかあります。ベーステーブルから切り離すテーブルへのアクセス速度が本当に遅くなるからです。次の構造を想像してください。
CREATE TABLE article (
id INT(10) UNSIGNED,
title VARCHAR(40),
author_id INT(10) UNSIGNED,
created DATETIME,
modified DATETIME
);
CREATE TABLE article_body (
id INT(10) UNSIGNED,
body TEXT
);
記事をリストするときはいつでも、表を使用できますarticle
(著者 33 の最後の 5 つの記事):
SELECT id, title FROM article WHERE author_id=33 ORDER BY created DESC LIMIT 5
そして、誰かが実際に記事を開いたときには、次のようなものを使用できます。
SELECT a.title, ab.body
FROM article AS a
LEFT JOIN article_body AS ab ON ab.id = a.id
WHERE a.id=82