ホームページ  >  記事  >  バックエンド開発  >  mysql Union all の効率に関する問題

mysql Union all の効率に関する問題

WBOY
WBOYオリジナル
2016-06-13 12:50:371442ブラウズ

mysql Union all の効率の問題

同じ構造を持つテーブルが複数あり、結合テーブル クエリを実行する必要があるため、次のステートメント
を使用します。
select sum(cnt) from (select count(*) as cnt from t1 where a>100 Union all select ...) as t;
この文は合計を簡単に取得する方法です。

select * from t1 where a>100 Union all select * from t2 where a>100 Union all select * from t3 where a>100 order by b desc limit 0,10000;
この文章は非常に効率が悪いようで、結果が出るまでに時間がかかりました。

どのように最適化すればよいでしょうか? ありがとうございます


-----解決策--------------------------------
2 番目の文には、order by b desc 制限 0,10000 があり、いくつかの点に影響を与えると推定されます。削除してみてください。
------解決策---------
ユニオン構造では、1 つのオーダーのみが許可されます。出現 (サブクエリ内のものを除く)
あなたの書き方は明らかに不合理、または時代遅れです (手動でテーブルを分割しており、分割が不合理であるため)
MySQL はパーティショニング機能を提供するようになりました。これは、適切に設定されている限り、単一の小規模テーブルと同じくらい高速です (ただし、複数のデータ ファイルに分割されます)
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。