ホームページ データベース mysql チュートリアル 10分钟小幅优化亿级数据查询

10分钟小幅优化亿级数据查询

Jun 07, 2016 pm 04:06 PM
最適化 データクエリ ユーザー

前几天,一个用户研发QQ找我,如下: 自由的海豚。 16:12:01 岛主,我的一条SQL查不出来结果,能帮我看看不? 兰花岛主 16:12:10 多久不出结果? 自由的海豚 16:12:17 多久都没出结果,一直没看到结果过。 兰花岛主 16:12:26 呵呵,好。 兰花岛主 16:12:39

前几天,一个用户研发QQ找我,如下:

自由的海豚。 16:12:01

岛主,我的一条SQL查不出来结果,能帮我看看不?

兰花岛主 16:12:10

多久不出结果?

自由的海豚 16:12:17

多久都没出结果,一直没看到结果过。

兰花岛主 16:12:26

呵呵,好。

兰花岛主 16:12:39

发下sql和执行计划。

自由的海豚 16:12:55

select n.c1, n.c2,n.c3,n.c4,n.c5
from (select count(t.c1), t.c1, t.c2,t.c3,t.c4,t.c5
from tab1 t
where t.c2 not in ('val1','val2','val3','val4','val5')
group by t.c1, t.c2,t.c3,t.c4,t.c5) n
where not exists
(select * from (
select count(s.c2), s.c1, s.c2
from (select m.c1, m.c2,m.c3,m.c4,m.c5
from tab1 m
where exists (select c1
from tab2 n
where c2 > sysdate - 14
and m.c1 = n.c1)
and m.c1 is not null
and m.c2 not in ('val1','val2', 'val3', 'val4', 'val5')) s
group by s.c1, s.c2) t1 where t1.c2 = n.c2)
and n.c1 is not null;

\

兰花岛主 16:13:12

这两张表大吗?

自由的海豚 16:13:16

tab1小,tab2亿级以上,两周数据在几千万。

兰化岛主 16:13:22

OK。

兰花岛主 16:16:29

这么改下sql吧:

with t1 as(
select count(t.c1), t.c1,t.c2,t.c3,t.c4,t.c5
from tab1 t
where t.c2 not in ('val1','val2','val3','val4','val5')
and c1 is not null
group by t.c1, t.c2,t.c3,t.c4,t.c5)
select t1.c1,t1.c2,t1.c3,t1.c4,t1.c5
from t1
where not exists(
select /*+ use_hash(m,n)*/ m.c1, m.c2,m.c3,m.c4,m.c5
from t1 m,tab2 n
where n.c2 > sysdate - 14
and m.c1 = n.c1
and t1.c2 = m.c2);

兰花岛主 16:16:43

取下执行计划。

自由的海豚 16:16:57

好的。

自由的海豚 16:17:25

\

兰花岛主 16:17:57

好的,试试吧。

自由的海豚 16:19:28

出结果了,37s

 

兰花岛主 17:20:21

嗯,好。

兰花岛主 17:20:34

这样可以吗?

自由的海豚 17:20:47

可以了可以了

兰花岛主 17:21:11

嗯,好,那就先这样,不继续调了。

自由的海豚 17:21:30

恩 好的 谢谢岛主

兰花岛主 17:21:53

不客气,忙吧,有事儿联系。

自由的海豚 17:22:18

恩,您忙。。。

至此,对用户这个sql的优化结束,其实,这个语句应该还有优化的空间,只是,用户说可以了那就可以了,因为优化是无止境的,而且,更进一步优化也许会需要更进一步的信息,且有时会需要更大的改动,鉴于各方面因素,文中对语句和计划进行了处理,记录于此,共勉!

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Xiaohonshu アカウントを使用してユーザーを見つけるにはどうすればよいですか?私の携帯電話番号を見つけることはできますか? Xiaohonshu アカウントを使用してユーザーを見つけるにはどうすればよいですか?私の携帯電話番号を見つけることはできますか? Mar 22, 2024 am 08:40 AM

ソーシャルメディアの急速な発展に伴い、Xiaohongshuは最も人気のあるソーシャルプラットフォームの1つになりました。ユーザーは、Xiaohongshu アカウントを作成して自分の個人情報を示し、他のユーザーと通信し、対話することができます。ユーザーの小紅樹番号を見つける必要がある場合は、次の簡単な手順に従ってください。 1. Xiaohonshu アカウントを使用してユーザーを見つけるにはどうすればよいですか? 1. 小紅書アプリを開き、右下隅の「検出」ボタンをクリックして、「メモ」オプションを選択します。 2. ノート一覧で、探したいユーザーが投稿したノートを見つけます。クリックしてノートの詳細ページに入ります。 3. ノートの詳細ページで、ユーザーのアバターの下にある「フォロー」ボタンをクリックして、ユーザーの個人ホームページに入ります。 4. ユーザーの個人ホームページの右上隅にある三点ボタンをクリックし、「個人情報」を選択します。

スーパーユーザーとして Ubuntu にログインします スーパーユーザーとして Ubuntu にログインします Mar 20, 2024 am 10:55 AM

Ubuntu システムでは、通常、root ユーザーは無効になっています。 root ユーザーをアクティブにするには、passwd コマンドを使用してパスワードを設定し、su-コマンドを使用して root としてログインします。 root ユーザーは、無制限のシステム管理権限を持つユーザーです。彼は、ファイルへのアクセスと変更、ユーザー管理、ソフトウェアのインストールと削除、およびシステム構成の変更を行う権限を持っています。 root ユーザーと一般ユーザーの間には明らかな違いがあり、root ユーザーはシステム内で最高の権限とより広範な制御権限を持ちます。 root ユーザーは、一般のユーザーでは実行できない重要なシステム コマンドを実行したり、システム ファイルを編集したりできます。このガイドでは、Ubuntu の root ユーザー、root としてログインする方法、および通常のユーザーとの違いについて説明します。知らせ

Linuxシステムにおけるユーザーパスワード保存メカニズムの分析 Linuxシステムにおけるユーザーパスワード保存メカニズムの分析 Mar 20, 2024 pm 04:27 PM

Linux システムにおけるユーザー パスワードの保存メカニズムの分析 Linux システムでは、ユーザー パスワードの保存は非常に重要なセキュリティ メカニズムの 1 つです。この記事では、パスワードの暗号化された保存、パスワード検証プロセス、ユーザー パスワードを安全に管理する方法など、Linux システムにおけるユーザー パスワードの保存メカニズムを分析します。同時に、具体的なコード例を使用して、パスワード保存の実際の操作プロセスを示します。 1. パスワードの暗号化された保管 Linux システムでは、ユーザーのパスワードは平文でシステムに保管されるのではなく、暗号化されて保管されます。 L

詳細な解釈: なぜ Laravel はカタツムリのように遅いのでしょうか? 詳細な解釈: なぜ Laravel はカタツムリのように遅いのでしょうか? Mar 07, 2024 am 09:54 AM

Laravel は人気のある PHP 開発フレームワークですが、カタツムリのように遅いと批判されることがあります。 Laravel の速度が満足できない原因は一体何でしょうか?この記事では、Laravel がカタツムリのように遅い理由をさまざまな側面から詳細に説明し、読者がこの問題をより深く理解できるように、具体的なコード例と組み合わせて説明します。 1. ORM クエリのパフォーマンスの問題 Laravel では、ORM (オブジェクト リレーショナル マッピング) は非常に強力な機能です。

Golang の GC 最適化戦略に関するディスカッション Golang の GC 最適化戦略に関するディスカッション Mar 06, 2024 pm 02:39 PM

Golang のガベージ コレクション (GC) は、開発者の間で常に話題になっています。高速プログラミング言語として、Golang の組み込みガベージ コレクターはメモリを適切に管理できますが、プログラムのサイズが大きくなるにつれて、パフォーマンスの問題が発生することがあります。この記事では、Golang の GC 最適化戦略を検討し、いくつかの具体的なコード例を示します。 Golang のガベージ コレクション Golang のガベージ コレクターは同時マークスイープ (concurrentmark-s) に基づいています。

C++ プログラムの最適化: 時間の複雑さを軽減する手法 C++ プログラムの最適化: 時間の複雑さを軽減する手法 Jun 01, 2024 am 11:19 AM

時間計算量は、入力のサイズに対するアルゴリズムの実行時間を測定します。 C++ プログラムの時間の複雑さを軽減するためのヒントには、適切なコンテナー (ベクター、リストなど) を選択して、データのストレージと管理を最適化することが含まれます。クイックソートなどの効率的なアルゴリズムを利用して計算時間を短縮します。複数の操作を排除して二重カウントを削減します。条件分岐を使用して、不必要な計算を回避します。二分探索などのより高速なアルゴリズムを使用して線形探索を最適化します。

Laravelのパフォーマンスボトルネックを解読:最適化テクニックを完全公開! Laravelのパフォーマンスボトルネックを解読:最適化テクニックを完全公開! Mar 06, 2024 pm 02:33 PM

Laravelのパフォーマンスボトルネックを解読:最適化テクニックを完全公開! Laravel は人気のある PHP フレームワークとして、開発者に豊富な機能と便利な開発エクスペリエンスを提供します。ただし、プロジェクトのサイズが大きくなり、訪問数が増加すると、パフォーマンスのボトルネックという課題に直面する可能性があります。この記事では、開発者が潜在的なパフォーマンスの問題を発見して解決できるように、Laravel のパフォーマンス最適化テクニックについて詳しく説明します。 1. Eloquent の遅延読み込みを使用したデータベース クエリの最適化 Eloquent を使用してデータベースにクエリを実行する場合は、次のことを避けてください。

Laravel パフォーマンスのボトルネックが明らかに: 最適化ソリューションが明らかに! Laravel パフォーマンスのボトルネックが明らかに: 最適化ソリューションが明らかに! Mar 07, 2024 pm 01:30 PM

Laravel パフォーマンスのボトルネックが明らかに: 最適化ソリューションが明らかに!インターネット技術の発展に伴い、Web サイトやアプリケーションのパフォーマンスの最適化がますます重要になってきています。人気の PHP フレームワークである Laravel は、開発プロセス中にパフォーマンスのボトルネックに直面する可能性があります。この記事では、Laravel アプリケーションが遭遇する可能性のあるパフォーマンスの問題を調査し、開発者がこれらの問題をより適切に解決できるように、いくつかの最適化ソリューションと具体的なコード例を提供します。 1. データベース クエリの最適化 データベース クエリは、Web アプリケーションにおける一般的なパフォーマンスのボトルネックの 1 つです。存在する

See all articles