1

これが私の問題です。内部データベースの1つからのデータを表示するために小さなASP.Netサイトを構築しました。クエリがボタンクリックで実行され、4つの異なるテキストボックスに入力されたパラメータを考慮に入れるように設定しました。クエリを上位100万行程度に制限すれば、これはすべて問題なく機能します。問題は、私のテーブルに5500万行を少し超える行があることです。リミッターを外すと、常にオーバーフローとメモリエラーが発生します。驚くことではありませんが、これを修正する方法があるかどうか疑問に思いました。クエリが実行された後にのみパラメータが適用されているのではないかと思いました。不正確な場合は申し訳ありませんが、私は先週このようなことを始めたばかりです。これが私のコードです:

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">

<span class="style1">

<strong>Date </strong>(dd/mm/yyyy)&nbsp;&nbsp;&nbsp; </span>
<asp:TextBox ID="TextBox4" runat="server" Text="14/08/2009" style="margin-left: 4px" 
    Width="125px"></asp:TextBox>
&nbsp; TO&nbsp;
<asp:TextBox ID="TextBox5" runat="server" Width="125px" Text="30/12/2012" ></asp:TextBox>
<br />
<span class="style1"><strong>Trans #&nbsp;&nbsp; </strong></span>
<asp:TextBox ID="TextBox2" runat="server" style="margin-left: 94px" 
    Width="125px"></asp:TextBox>
<br />
<strong><span class="style1">Part &nbsp; </span></strong>
<asp:TextBox ID="TextBox3" runat="server" style="margin-left: 117px" 
    Width="125px"></asp:TextBox>
<br />
<br />
<asp:Button ID="Button1" runat="server" Text="Go" onclick="Button1_Click" />
<br />
<br />
   <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" 
ForeColor="#333333" GridLines="None" HorizontalAlign="Left" 
    onselectedindexchanged="GridView1_SelectedIndexChanged" 
    style="text-align: center" >
    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
    <Columns>
      <asp:BoundField DataField="C6946_TRANS_TYPE" HeaderText="Type de Transaction/Transaction Type" 
            SortExpression="C6946_TRANS_TYPE" />
        <asp:BoundField DataField="C6946_TRANS_DATE" 
            HtmlEncode="false" HeaderText="Date de Transaction/Transaction Date" ConvertEmptyStringToNull="false"
            SortExpression="C6946_TRANS_DATE" FooterStyle-HorizontalAlign="Right" DataFormatString="{0:d}" 
           >

「」

SelectCommand="SELECT C6946_TRANS_TYPE, C6946_TRANS_DATE, C6946_SO, C6946_LATE_FLAG, C6946_TRANS_NUM, ALIGNED_PART_NUMBER, C1001_ENG_PART_NUMBER, C6946_PART_KEY, PART_DESCRIPTION, C6946_RECORD FROM DWH.AIXW2S_T6946_TRANS_IMS"

    FilterExpression= "C6946_TRANS_NUM LIKE '%{0}%' AND (C6946_PART_KEY LIKE '%{1}%' OR ALIGNED_PART_NUMBER LIKE '%{1}%' OR C1001_ENG_PART_NUMBER LIKE '%{1}%')  AND C6946_TRANS_DATE >= #{2}# AND C6946_TRANS_DATE <= #{3}#">
<FilterParameters> 
            <asp:ControlParameter ControlID="TextBox2" Name="C6946_TRANS_NUM" PropertyName="text" Type="String" DefaultValue="" ConvertEmptyStringToNull="false"/> 
            <asp:ControlParameter ControlID="TextBox3" Name="C6946_PART_KEY" PropertyName="text"  Type="string"  DefaultValue="" ConvertEmptyStringToNull="false"/>
            <asp:ControlParameter ControlID="TextBox4" Name="C6946_TRANS_DATE" PropertyName="text"  Type="DateTime"  DefaultValue="" ConvertEmptyStringToNull="false"/>
            <asp:ControlParameter ControlID="TextBox5" Name="C6946_TRANS_DATE" PropertyName="text"  Type="DateTime"  DefaultValue="" ConvertEmptyStringToNull="false"/>
        </FilterParameters> 
</asp:SqlDataSource>
<br />
</asp:Content>
4

2 に答える 2

0

32 ビット ワーカー プロセスでメモリ制限に達している可能性があります (使用している場合)。これが通ったとしても、おそらくブラウザはクラッシュするでしょう。これは、デスクトップ アプリケーションに適していて、より現実的です。

于 2012-12-13T19:35:24.247 に答える
0

アーキテクチャの再設計が必要になる場合があります。必要なレコードを取得するためのデータベースへのページング クエリ (おそらく REST API 呼び出しを介して?)、またはそのようなサイズのテーブル間で JOIN を実行するときにクエリ パフォーマンスの問題が発生している場合は、おそらく NoSQL の代替手段です。

于 2012-12-13T20:07:34.453 に答える