2つのデータ型は実質的に同じように処理されます。停滞には他にも多くの理由が考えられます。 (しかし、私が知っている限り、MEDIUMTEXT
とは言えません。 VARHAR
よりも悪い 。)
では...Webページを高速化できるかどうか見てみましょう...
microtime(true)
を入力します mysql呼び出しの周り-それがPHPではなくMySQLであることを確認します。 「0.019秒」は理にかなっています。 「1.5-2秒」はPHPで何かが起こっているように聞こえます。
InnoDBを使用します。ではありません MyISAM。 (反対の主張にもかかわらず。)
正しく調整してください。 SHOW VARIABLES LIKE '%buffer%';
を見てみましょう どのくらいのRAMがありますか? (スワッピングはパフォーマンスにとってひどいものです。)
何行返されますか? Webページに数十を超えることは実用的ではないため、ORDER BY...LIMIT...
を追加します。 。
UIの制限が1000文字の場合は、TEXT
を使用します またはVARCHAR(1000)
、MEDIUMTEXT
ではありません 。最大64Kバイトを上げようとしている場合(潜在的に 4Kutf8mb4文字 )、次にTEXT
を使用します 。
これは必要です(列はどちらの順序でも):
INDEX(part_id, language)
MyISAMテーブルに多くの「チャーン」(削除や更新の後に挿入が続く)があった場合、データが断片化される可能性があるため、処理が遅くなります。これは、両方のVARCHAR
で発生する可能性があります およびTEXT
。これはInnoDBでは発生しません。