最近、特に異常なビジネス需要があり、テーブルがあります テーブル「デモ」を作成します( `id` int(11) 符号なし NOT NULL AUTO_INCREMENT, `tid` int(11) デフォルト '0', `pid` int(11) デフォルト '1', 主キー (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3000124 デフォルトCHARSET=utf8; 以上です。レコードの行数は 300 万行を超えます。各 pid はこの ID の最上位カテゴリを記録し、tid はその親カテゴリです。 Oracle には connect_by_isleaf というメソッドがあり、すべてのサブセットを簡単に見つけることができますが、私は MySQL を使用しています... そこで、ここではMySQLメソッドやストアドプロシージャを使用して実装した経験について簡単に書きます。 1つ目: MySQL方式 CREATE DEFINER=`root`@`localhost` FUNCTION `lvtao_demo_a`(rootId int) 戻り値 text CHARSET utf8 SQLデータの読み取り コメント「デモ」 始める sTemp テキストを宣言します。 sTempChd テキストを宣言します。 SET sTempChd =cast(rootId を CHAR として)。 sTemp を '' に設定します。 sTempChdがnullではない場合 SET sTemp = concat(sTemp,',',sTempChd); SELECT group_concat(id) INTO sTempChd FROM demo where FIND_IN_SET(tid,sTempChd)>0; 終了しながら; sTemp を返します。 終わり; 使用方法は lvtao_demo_a(5)を選択します。 しかし、テストしていたところ、300 万個のデータがクラッシュしてしまいました。 ! ! 行 1 の列 'sTemp' のデータが長すぎます 利点: シンプル、便利、再帰呼び出しレベルの深さに制限なし (max_sp_recursion_depth、最大 255)。 2番目のタイプ: ストアドプロシージャ + 中間テーブル 区切り文字 ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `sss`(IN pid int, IN rootid int) 始める done INT DEFAULT FALSE を宣言します。 id TEXT を宣言します。 DECLARE cur1 CURSOR FOR SELECT id FROM demo WHERE tid=pid; NOT FOUND SET done = TRUE の継続ハンドラーを宣言します。 max_sp_recursion_depth を 200 に設定します。 オープンcur1; read_loop: ループ cur1 を id にフェッチします。 完了したら read_loop を終了します。 終了の場合; INSERT INTO temp (rootid,zid) values (rootid, id); sss(id,rootid) を呼び出します。 ループを終了; cur1 を閉じます。 終わり;; 区切り文字 ; ハハハ、300万のデータもボールの中に詰まってるよ〜〜〜 別の方法を考えよう~~~~もうこれ以上は気にしない 以下もご興味があるかもしれません:
|
>>: Docker で ElasticSearch をデプロイする方法
1. リポジトリファイルを作成するmongodb の公式インストール ドキュメントを参照し、次のスク...
目次1. JavaScriptを使用してQRコードを解析する1. QR コードとは何ですか? 2.q...
目次マスターの後ろの秒数オリジナルの実装最終マスタータイムスタンプマスターとのクロック差他の実行時間...
AND キーワードを使用した MySQL 複数条件クエリ。MySQL では、AND キーワードを使用...
SQL はメイントランクです。なぜ私はこのように理解するのでしょうか。技術的な観点からリレーショナル...
この記事では、タイピングゲームを実装するためのJavaScriptの具体的なコードを参考までに紹介し...
Centos7 バージョンをインストールするときに、外部ネットワークへの接続を選択すると、外部ネット...
Vue での img の動的スプライシングを見てみましょう。src 画像アドレス、具体的な内容は次の...
JavaScript での HTML (選択オプション) の詳細な説明1. 基本的な理解:コードをコ...
Shtml と asp は似ています。shtml という名前のファイルでは、asp の命令と同様に、...
この記事では、例を使用して MySQL プロセス関数の一般的な使用方法を説明します。ご参考までに、詳...
Azure Container Registry は、Docker Registry 2.0 仕様に...
Array の filter、find、some、reduce メソッドの違いを区別し、使用シナリオ...
ロックの分類:データ操作の粒度から:テーブルロック:操作時にテーブル全体がロックされます。行ロック:...
目次インストールパッケージのダウンロードインストール環境変数の設定インストールが成功したか確認する記...