最近、特に異常なビジネス需要があり、テーブルがあります テーブル「デモ」を作成します( `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 をデプロイする方法
目次予防必要条件AWSアカウントを申請する仮想マシンの申請と有効化仮想マシンを申請するセキュリティグ...
目次インデックスとは何か主キーインデックスと通常のインデックスの違いインデックスにはどのデータ構造が...
コアコード -- 以下では、MySQLでのソート列の実装を示します -- テストデータ CREATE...
目次1. 基本概念の紹介2. ネットワークIOの読み取りと書き込みのプロセス3. 5つのLinuxネ...
導入インストールするシステムの数が多い場合、USB フラッシュ ドライブまたは CD を使用した手動...
目次1. 概要1.1 プロトタイプとは何ですか? 1.2 プロトタイプを入手する2. プロトタイプの...
1. 関連ツールと画像をダウンロードするダウンロードリンクバーチャルボックス: https://do...
テーブル ヘッダーが固定されている場合は、それを 2 つのテーブルに分割する必要があります。1 つの...
問題の説明: MySQL に中国語の文字を挿入する場合、または MySQL では中国語の文字が正常に...
前面に書かれた近年、ライブストリーミング業界は非常に人気が高まっています。伝統的な業界でのライブスト...
ネットワーク通信の概要オンライン ゲームを開発する場合、必然的にネットワーク通信に対処する必要があり...
インターネット上にはMySQL 5.7.17のインストールチュートリアルがほとんどなく不十分なので、...
目次ディレクトリ構造binディレクトリconfディレクトリlibディレクトリwebapps ディレク...
/****************** * カーネルデバッグ技術 ****************...
Docker の導入規模が大きくなると、コンテナを監視する必要があります。一般的に、Docker に...