[置顶] 存储过程 Row_number
自己之前一直是使用的通用的存储过程 ,也是封装好的只要传表名 然后 条件 等等 来到新环境 让自己写一个存储过程, 没办法 自己就需要写一个咯 之前写的比较多的是 按 top 来分页 现在公司要求是使用Row_number 当然 后者效率还是高一点 。至于索引什么的
自己之前一直是使用的通用的存储过程 ,也是封装好的只要传表名 然后 条件 等等
来到新环境 让自己写一个存储过程, 没办法 自己就需要写一个咯 之前写的比较多的是 按 top 来分页 现在公司要求是使用Row_number 当然 后者效率还是高一点 。至于索引什么的 暂时还没有用到 (有什么需求 现学也是可以的)其中也有 with(nolock) 但是会容易造成数据脏读。如果你有用到索引 或者你想看到你的语句查询开销 你可以使用(ctrl+M)键调出来。至于你看到这些占用啥的 懵了? 那就请你移驾 自行查找(我也不会你信吗?)
<code class=" hljs sql"> USE [JHMinGameDB] GO <span class="hljs-operator"><span class="hljs-keyword">SET</span> ANSI_NULLS <span class="hljs-keyword">ON</span> <span class="hljs-keyword">GO</span> <span class="hljs-keyword">SET</span> QUOTED_IDENTIFIER <span class="hljs-keyword">ON</span> <span class="hljs-keyword">GO</span> -- ============================================= -- Author: yanyunhai -- <span class="hljs-keyword">Create</span> <span class="hljs-keyword">date</span>: <span class="hljs-number">2016</span>-<span class="hljs-number">04</span>-<span class="hljs-number">13</span> -- Description: 新手送豆 -- ============================================= <span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">PROCEDURE</span> [dbo].[Web_Active_Buyu_CardLog_page] --创建该存储过程名字(如已经存在 要改的时候就把 <span class="hljs-keyword">create</span> 变成 <span class="hljs-keyword">Alter</span>) @State <span class="hljs-keyword">int</span>, @startTime datetime, @endTime datetime, @pageSize <span class="hljs-keyword">int</span>, @pageIndex <span class="hljs-keyword">int</span>, @recd <span class="hljs-keyword">int</span> <span class="hljs-keyword">output</span>,--输出参数 @totalpeas <span class="hljs-keyword">int</span> <span class="hljs-keyword">output</span> --输出参数 <span class="hljs-keyword">AS</span> <span class="hljs-keyword">set</span> @recd=<span class="hljs-number">0</span> --赋值为<span class="hljs-number">0</span>是避免查询结果为<span class="hljs-number">0</span> 时 显示为<span class="hljs-keyword">null</span> <span class="hljs-keyword">set</span> @totalpeas=<span class="hljs-number">0</span> <span class="hljs-keyword">Declare</span> @recdst <span class="hljs-keyword">int</span>=<span class="hljs-number">0</span>,@recdend <span class="hljs-keyword">int</span>=<span class="hljs-number">0</span> --@recdst起始条数 <span class="hljs-keyword">Set</span> @recdst=@pageSize * (@pageIndex-<span class="hljs-number">1</span>)+<span class="hljs-number">1</span> -- @recdend 结束条数 <span class="hljs-keyword">Set</span> @recdend=@pageSize + @recdst-<span class="hljs-number">1</span> <span class="hljs-keyword">BEGIN</span> --在对于时间判断时建议 少用 between <span class="hljs-keyword">and</span> 因为 <span class="hljs-number">0</span>:<span class="hljs-number">00</span>-<span class="hljs-number">23</span>:<span class="hljs-number">59</span> <span class="hljs-keyword">declare</span> @SumNum1 <span class="hljs-keyword">int</span>,@SumNum2 <span class="hljs-keyword">int</span>,@SumNum3 <span class="hljs-keyword">int</span> <span class="hljs-keyword">select</span> @SumNum1=<span class="hljs-aggregate">COUNT</span>(*) <span class="hljs-keyword">from</span> Active_CardLog <span class="hljs-keyword">with</span>(nolock) <span class="hljs-keyword">where</span> [State]=<span class="hljs-number">0</span> <span class="hljs-keyword">select</span> @SumNum2=<span class="hljs-aggregate">COUNT</span>(*) <span class="hljs-keyword">from</span> Active_CardLog <span class="hljs-keyword">with</span>(nolock) <span class="hljs-keyword">where</span> [State]=<span class="hljs-number">1</span> <span class="hljs-keyword">select</span> @SumNum3=<span class="hljs-aggregate">COUNT</span>(*) <span class="hljs-keyword">from</span> Active_CardLog <span class="hljs-keyword">with</span>(nolock) <span class="hljs-keyword">where</span> [State]=<span class="hljs-number">1</span> <span class="hljs-keyword">and</span> UpTime>=@startTime <span class="hljs-keyword">and</span> UpTime<@endTime <span class="hljs-keyword">if</span> @State>=<span class="hljs-number">0</span> <span class="hljs-keyword">begin</span> <span class="hljs-keyword">select</span> row_number() over(<span class="hljs-keyword">order</span> <span class="hljs-keyword">by</span> UpTime <span class="hljs-keyword">desc</span>) <span class="hljs-keyword">as</span> rowid,a.id,CardID, CardPwd, CardNum, State, UserID, IP, UpTime, CreateTime,b.myname <span class="hljs-keyword">into</span> #tmp <span class="hljs-keyword">from</span> Active_CardLog a <span class="hljs-keyword">left</span> <span class="hljs-keyword">join</span> JH_member b <span class="hljs-keyword">on</span> b.idx=a.UserID <span class="hljs-keyword">where</span> State=@State --<span class="hljs-keyword">and</span> UpTime>=@startTime <span class="hljs-keyword">and</span> UpTime<@endTime <span class="hljs-keyword">select</span> @totalpeas=isnull(<span class="hljs-aggregate">SUM</span>(CardNum),<span class="hljs-number">0</span>),@recd=<span class="hljs-aggregate">count</span>(<span class="hljs-number">1</span>) <span class="hljs-keyword">from</span> #tmp <span class="hljs-keyword">select</span> rowid,CardID, CardPwd, CardNum, State, UserID, IP, UpTime, CreateTime,myname,@totalpeas sumnum,@recd sumRowID,@SumNum1 SumNum1,@SumNum2 SumNum2,@SumNum3 SumNum3 <span class="hljs-keyword">from</span> #tmp <span class="hljs-keyword">where</span> rowid between @recdst <span class="hljs-keyword">and</span> @recdend --根据rowid 来确定显示区间 <span class="hljs-keyword">drop</span> <span class="hljs-keyword">table</span> #tmp <span class="hljs-keyword">end</span> <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> @State<<span class="hljs-number">0</span> <span class="hljs-keyword">begin</span> <span class="hljs-keyword">select</span> row_number() over(<span class="hljs-keyword">order</span> <span class="hljs-keyword">by</span> UpTime <span class="hljs-keyword">desc</span>) <span class="hljs-keyword">as</span> rowid,a.id,CardID, CardPwd, CardNum, State, UserID, IP, UpTime, CreateTime,b.myname <span class="hljs-keyword">into</span> #temp <span class="hljs-keyword">from</span> Active_CardLog a <span class="hljs-keyword">left</span> <span class="hljs-keyword">join</span> JH_member b <span class="hljs-keyword">on</span> b.idx=a.UserID <span class="hljs-keyword">where</span> UpTime>=@startTime <span class="hljs-keyword">and</span> UpTime<@endTime <span class="hljs-keyword">select</span> @totalpeas=isnull(<span class="hljs-aggregate">SUM</span>(CardNum),<span class="hljs-number">0</span>),@recd=<span class="hljs-aggregate">count</span>(<span class="hljs-number">1</span>) <span class="hljs-keyword">from</span> #temp <span class="hljs-keyword">where</span> rowid between @recdst <span class="hljs-keyword">and</span> @recdend --根据rowid 来确定显示区间 <span class="hljs-keyword">drop</span> <span class="hljs-keyword">table</span> #temp <span class="hljs-keyword">end</span> <span class="hljs-keyword">END</span> - -其实上问可以用不用判断也可以解决这个问题 那就是用 <span class="hljs-keyword">where</span>(([State]=<span class="hljs-number">2</span>)<span class="hljs-keyword">or</span>([State]=@state)) - -有人在使用时 会出现 Rowid 报错?自己找找子查询 <span class="hljs-keyword">GO</span> </span></code>
——————– with (nolock)—-数据多的时候可以《索引之后的选择》—————–
使用情况: 当我们在下SQL Command时,在语法中加一段WITH (NOLOCK)可以改善在线大量查询的环境中数据集被LOCK的现象藉此改善查询的效能。
不过有一点千万要注意的就是,WITH (NOLOCK)的SQL SELECT有可能会造成数据脏读。
用法:select * from table with(nolock) left join table with(nolock) 表名后面接上 with (nolock)
注意事项:①也就是说当使用NoLock时,它允许阅读那些已经修改但是还没有交易完成的数据。因此如果有需要考虑transaction事务数据的实时完整性时,使用WITH (NOLOCK)就要好好考虑一下
②:with(nolock)的写法非常容易再指定索引。
跨服务器查询语句时 不能用with (nolock) 只能用nolock
同一个服务器查询时 则with (nolock)和nolock都可以用
比如:
select * from [IP].a.dbo.table1 with (nolock) 这样会提示用错误
select * from a.dbo.table1 with (nolock) 这样就可以
当然 你也可以看看 over() 开窗函数
其中的一些东西也是看前一任 程序员写的, 然后就有在园子里面看看介绍。 自己摘了一部分 因为看别人的东西的时候也没有做到用怀疑的态度去看 去分析 所以贴出来 。如果你看到以后有错误 有误区 欢迎指正!!
对你的能力是一次证明, 对我是一次帮助。 虚心求学。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









このウェブサイトは3月7日、ファーウェイのデータストレージ製品ラインの社長である周岳峰博士が最近MWC2024カンファレンスに出席し、特にウォームデータ(WarmData)とコールドデータ(ColdData)用に設計された新世代のOceanStorArctic磁電ストレージソリューションをデモンストレーションしたと報じた。ファーウェイのデータストレージ製品ラインの社長である周岳峰氏は、一連の革新的なソリューションをリリースした 画像出典: このサイトに添付されているファーウェイの公式プレスリリースは次のとおりです: このソリューションのコストは磁気テープのコストより 20% 低く、そのコストは磁気テープのコストよりも 20% 低くなります。消費電力はハードディスクよりも90%低いです。外国のテクノロジーメディアのblocksandfilesによると、ファーウェイの広報担当者も磁気電子ストレージソリューションに関する情報を明らかにした:ファーウェイの磁気電子ディスク(MED)は磁気ストレージメディアの主要な革新である。初代ME

Vue3+TS+Vite 開発のヒント: データを暗号化して保存する方法 インターネット技術の急速な発展に伴い、データ セキュリティとプライバシー保護がますます重要になっています。 Vue3+TS+Vite 開発環境では、データをどのように暗号化して保存するかが、すべての開発者が直面する必要がある問題です。この記事では、開発者がアプリケーションのセキュリティとユーザー エクスペリエンスを向上させるのに役立つ、一般的なデータ暗号化とストレージのテクニックをいくつか紹介します。 1. データ暗号化 フロントエンド データ暗号化 フロントエンド暗号化は、データ セキュリティを保護するための重要な部分です。よく使われる

キャッシュとは何ですか?キャッシュ (カシェイと発音) は、頻繁に要求されるデータや命令を保存するために使用される特殊な高速ハードウェアまたはソフトウェア コンポーネントであり、Web サイト、アプリケーション、サービス、およびシステムのその他の側面をより高速に読み込むために使用できます。 。キャッシュにより、最も頻繁にアクセスされるデータがすぐに利用できるようになります。キャッシュ ファイルはキャッシュ メモリとは異なります。キャッシュ ファイルとは、複数のプログラムで必要になる可能性がある、PNG、アイコン、ロゴ、シェーダーなどの頻繁に必要なファイルを指します。これらのファイルは物理ドライブ領域に保存され、通常は隠されています。一方、キャッシュ メモリは、メイン メモリや RAM よりも高速なメモリのタイプです。 CPUに近く、RAMに比べて高速なため、データアクセス時間が大幅に短縮されます。

Douyin にはたくさんの動画作品を撮影しているユーザーがいますが、動画作品が多すぎると、あらゆる優れた動画作品が埋もれてしまいます。ピン留め機能は非常に便利です。では、自分の動画作品をピン留めするにはどうすればよいでしょうか?次に、エディターは、Douyin に自分のビデオをピン留めする方法に関するグラフィック チュートリアルを提供します。ビデオをトップにピン留めする方法がわからないユーザーは、参照してください。 Tiktokの使い方チュートリアル: 自分のビデオをTiktokにピン留めする方法 1. まず、Tiktokを開き、メインインターフェースの右下隅にある図に示すように、「私」をクリックします。 2. 個人インターフェイスに入ったら、トップに固定したいビデオ作品を見つけ、クリックして再生します。 3. 次に、ビデオ インターフェイスで、図に示すように、右下隅にある 3 つの点のオプションをクリックします。 4. 最後に、新しいポップアップ ウィンドウの上部のボタンをクリックして、個人の世界に戻ります。

Git は、高速で信頼性が高く、適応性に優れた分散バージョン管理システムです。分散型の非線形ワークフローをサポートするように設計されており、あらゆる規模のソフトウェア開発チームに最適です。各 Git 作業ディレクトリは、すべての変更の完全な履歴を備えた独立したリポジトリであり、ネットワーク アクセスや中央サーバーがなくてもバージョンを追跡できます。 GitHub は、分散リビジョン管理のすべての機能を提供する、クラウド上でホストされる Git リポジトリです。 GitHub は、クラウド上でホストされる Git リポジトリです。 CLI ツールである Git とは異なり、GitHub には Web ベースのグラフィカル ユーザー インターフェイスがあります。これは、他の開発者との共同作業や、スクリプトへの変更の追跡などのバージョン管理に使用されます。

sessionStorage を正しく使用して機密情報を保存する方法には、特定のコード サンプルが必要です。Web 開発でもモバイル アプリケーション開発でも、ユーザーのログイン資格情報や ID 番号などの機密情報を保存して処理する必要があることがよくあります。フロントエンド開発では、sessionStorage の使用が一般的なストレージ ソリューションです。ただし、sessionStorage はブラウザベースのストレージであるため、保存されている機密情報が悪意を持ってアクセスされ、使用されないように、いくつかのセキュリティ問題に注意を払う必要があります。

PHP と swoole はどのようにして効率的なデータのキャッシュとストレージを実現するのでしょうか?概要: Web アプリケーション開発では、データのキャッシュとストレージは非常に重要な部分です。 PHP と swoole は、データをキャッシュして保存するための効率的な方法を提供します。この記事では、PHP と swoole を使用して効率的なデータ キャッシュとストレージを実現する方法を紹介し、対応するコード例を示します。 1. swoole の紹介: swoole は、PHP 言語用に開発された高性能の非同期ネットワーク通信エンジンです。

この記事は WeChat 公開アカウント「情報時代に生きる」から転載したものであり、著者は情報時代に生きています。この記事を転載するには、情報時代の暮らしの公開アカウントまでご連絡ください。データベース操作に慣れている学生にとって、美しい SQL ステートメントを作成し、データベースから必要なデータを見つける方法を見つけることは日常的な操作です。機械学習に精通している学生にとって、データの取得、データの前処理、モデルの構築、トレーニング セットとテスト セットの決定、トレーニングされたモデルを使用して将来についての一連の予測を行うことは、日常的な操作でもあります。では、2 つのテクノロジーを組み合わせることはできるでしょうか?データはデータベースに保存されており、予測は過去のデータに基づく必要があることがわかります。データベース内の既存のデータを通じて将来のデータをクエリすると、次のようになります。
