0
私は動的フィールドにグループを適用しています どのmysqlシステム変数が速度を上げますか?どのmysqlシステム変数がgroup by節に影響しますか?
は、例えば:tmp_table_sizeまたはmax_heap_table_sizeや他の...
私のテーブルサイズ700メガバイトであると説明し、私は、「インデックスの条件を使用して、一時的な使用; filesortレコードの使用」を与え
私のクエリは以下の通りですが。
SELECT
IF(
flag IN ('A', 'B')
'featured',
'normal'
) AS package,
IF(
flag2 = 'A',
'group1',
'group2'
) AS group_num,
COUNT(*) AS total
FROM
mytable
WHERE publish = 1
AND status IN ('on', 'deleted', 'expired',)
GROUP BY customized_flag,
agency_package_status ;
実行速度に影響するシステム変数がいくつかありますが、最も重要な要素はインデックスです。だから1つを追加します。例えば。 'mytable(customized_flag、agency_package_status、publish、status)'または 'mytable(publish、customized_flag、agency_package_status)'などのようなものです(データコンテンツに少し依存します)。また、 'customize_flag、agency_package_status'の値が' flag'や 'flag2'の値が異なるグループに複数の行がある場合、' package'と '' pack_status'を計算するためにどちらの値を使うべきかは不明です。 'group_num'。 (MySQLはランダムな行を使用します)。 – Solarflare
システム変数を最後の手段以外で探すべきではありません。クエリのパフォーマンスが遅い理由は、ほとんどの場合、クエリ自体、またはそれが依存している(存在しない可能性のある)インデックス内に見つかる可能性があります。 – EJP