Index spreadsheet element

I have various elements like temperature, humidity, etc logged to a *.txt file.  Is there a way I can explicitly define which cell to pull data from.  For example if I wanted to see the result in cell A1.  Do I need to change my files to *.xls first?...Thanks.
LabVIEW 2012 - Windows 7
CLAD

you should be able to load a .txt tab delimainated spreadsheed using read spreadsheet to a labview array and index the array as usual.  You dont need excel at all.
Paul Falkenstein
Coleman Technologies Inc.
CLA, CPI, AIA-Vision
Labview 4.0- 2013, RT, Vision, FPGA

Similar Messages

  • How can I add values on a Drop Down by Index Webdynpro Element?

    Hi every body
    Can anybody help me?
    How can I add values on a Drop Down by Index Webdynpro Element?
    How can I invoque my element on the Implementation Webdynpro?

    Hi Jesus,
    You can add elements to your DDbyIndex like this:
    //Example: Popular un Dropdown by Index usando Nodos de contexto  
    // NODE[Card: 1..n, Sele:1..1]  Si es obligatorio;            ||    NODE[Card: 0..n, Sele:0..1]  Si no es obligatorio y se puede dejar en blanco
    //Assuming we created a node called "Source", with a string attribute called "Texto" binded to the dropdownbyindex
    for (int i = 1; i <= 101; i++)
         ISourceElement sourceElement = wdContext.createSourceElement();
           sourceElement.setTexto("Text number "+i);
           wdContext.nodeSource().addElement(sourceElement);
    Regards.
    Julio Herrera

  • How can I add values on a Drop Down by Index Webdynpro Element by a Model?

    How can I add values on a Drop Down by Index Webdynpro Element with a Model RFC?

    Hi Jesus,
    Please use the below code for DropDownByIndex Elements :-
    Suppose you have model node ABC and attribute xyz. Now you have created custom node CustNode and attribute CustAtt.
    ICustNodeElement  ele = null;
    if(wdContext.nodeABC().size > 0)
                  for(int i=0; i< CustNode< wdContext.nodeABC().size; i++
         ele = wdContext. createCustNode();
                          ele.setCustAtt(wdContext.nodeABC().getABCElementAt(i).getXYZ)
         wdContext.nodeCustNode.add(ele);
    Refer to http://help.sap.com/saphelp_nw70/helpdata/en/3b/f1754276e4c153e10000000a1550b0/frameset.htm
    Best Regards
    Arun Jaiswal

  • Unable to expand drop down by index UI element

    Hi,
    I have got one Drop down by index in my webdynpro form and I want to bind this to backend data. For this purpose, I created one adaptive rfc model  and also did all this model binding, context mapping etc.
    Now my context in view  looks like this :- GetDropDown_Mn (parent node) , this has got child Output_DropDown which again has two value attributes Name and Text.
    This is component controller code where you bind and invalidate
    __Shell__Ca_Read_Cr_Drbox_Val_Input dropdown = new __Shell__Ca_Read_Cr_Drbox_Val_Input();
            wdContext.nodeGetDropDown_Mn().bind(dropdown);
            wdContext.currentGetDropDown_MnElement().modelObject().execute();
            wdContext.nodeOutput_DropDown().invalidate();
    I then tried to bind my UI element in view with Name attribute , but when I try to run my application , the field appears as read only, kind of non editable (blocked) and I am unable to expand my dropdown.
    The readonly property of UI element is false. I have hard coded one value like " Please select from drop down list " and I want the backend values to come below this. For this, I have written code to append the backend values with the hardcoded value. Now the problem is my dropdown is blocked  and not able to expand ( unable to click the arrow button), and I cannot see the other values in dropdown except the hard coded value.
    Can someone please help me on this. 
    The cardinality of context node is 1..n, selection = 0..1 and I have set Leadselection = -1.
    Thanks and regards,
    Sai

    Hi Sai,
    You can use the below code to add the please select in ur drop down in wdInit() method
    wdContext.nodeVn_Node().currentVn_NodeElement().setVa_Attribute("-Please Select-");
    please use the name of node as u have created in the context.
    and after that please check if yoy are getting values from RFC call or not.
    if you are getting the values then try to change the selection property of that node to 1..n and comment the lead selection line that you have written.
    hope this will help.
    Regards
    Narendra

  • How to Find the Index of Element in the XMLListCollection

    Hi,
    I have a burning question here, and I wonder if anyone has tried to do this.
    I have an XML file that is read into the xml collection, and for each of the names that appear in the file (pre-declared somewhere else) , I tried to remove the element.
      However, it either gives me -1, if I do trace(slc.getItemIndex(xml.@name).toString()); when they exist, or tell me #3594 as shown in the error below:
    Here is the code:
    private function checkBox_change(event:Event):void{    
               xlc = new XMLListCollection(searchResult..book);  
                   len = searchResult..publisher.length();              
                   for (idx=0;idx<len; idx++) {
                       if (checkBox[idx].selected == false) {                          
                               for each (name in input_name2) {  
                               for each (xml in xlc){
                               if ((xml.@name == checkBox[idx].label) && (xml.@pub == name)){    
        trace(xml.getItemIndex(xml.@name).toString());
        //I get an error that says 3594: getItemIndex is not a recognized method of the dynamic class XML.                            
    Could anyone please give me some pointers on how to remove the desired element? I do know how to use splice.
    Thanks for your help.
    Alice

    Alice you could do something like this
    delete myXML.(@ISBN=="4689997865")
    Sincerely,
    Michael
    El 04/05/2009, a las 11:54, alice_data <[email protected]> escribió:
    >
    Hi,
    >
    I have a burning question here, and I wonder if anyone has tried to 
    do this.
    I have an XML file that is read into the xml collection, and for 
    each of the names that appear in the file (pre-declared somewhere 
    else) , I tried to remove the element.
    >
      However, it either gives me -1, if I do 
    trace(slc.getItemIndex(xml.@name).toString()); when they exist, or 
    tell me #3594 as shown in the error below:
    >
    Here is the code:
    >
    private function checkBox_change(event:Event):void{
               xlc = new XMLListCollection(searchResult..book);
                   len = searchResult..publisher.length();
                   for (idx=0;idx<len; idx++) {
                       if (checkBox[idx].selected == false) {
                               for each (name in input_name2) {
                               for each (xml in xlc){
                               if ((xml.@name == checkBox[idx].label) && 
    (xml.@pub == name)){
        trace(xml.getItemIndex(xml.@name).toString());
        //I get an error that says 3594: getItemIndex is not a 
    recognized method of the dynamic class XML.
    >
    >
    Could anyone please give me some pointers on how to remove the 
    desired element? I do know how to use splice.
    Thanks for your help.
    >
    Alice
    >

  • Index Nth Element in XML DataSource

    Hi, I'm a little new to the Crystal Reports formula syntax & I wanted to reference a specific Nth element in an XML Data source.
    Here's a portion of my XML:
    <summary>
      <group>
        <attrName>creditType</attrName>
      </group>
      <group>
        <attrName>appStatus</attrName>
      </group>
    </summary>
    Basically, I want to show/hide columns based on the contents of <attrName> (ie. in this case, creditType should be 1st column & appStatus should be 2nd column).
    In the 1st column I placed the heading creditType & appStatus and I suppressed it based on the formulas: {summary/group.attrName} = "creditType" & {summary/group.attrName} = "appStatus"
    However, for the 2nd column, I don't know how to explicitly referenced the 2nd instance of /summary/group/attrName to write the suppress formula.  The formula above always references the 1st instance that matches the XPath.
    If anyone has any clue let me know, or maybe I need a different approach to show/hide columns based on the structure/value of an XML file.

    Please re-post if this is still an issue or purchase a case and have a dedicated support engineer work with you directly

  • Editor bug if you drag a case structure over an index/replace elements node on a in place structure

    To reproduce:
    Drag a case structure over a index/replace array node
    You'll end up with this train wreck. Autocleanup no longer works
    Interestingly, you can still get it to compile but setting the boolean to true doesn't run the true case. Warning: dragging the below snippet onto your block diagram will probably crash LabVIEW
    Select all that and drag it into a new VI. Run autocleanup and the development environment will crash: Exception: Noncontinuable exception (0xC0000025) at EIP=0x00000000
    Running LabVIEW 2014 SP1 with nothing special.

    To quote Obi-Wan
    This is not the bug you are looking for..........
    Now search for "Clear as mud"
    Having a Wired treminal inside an IPE driving conditional code should break the snot out of that code and cause the compiler to puke all over!  The lack of check for that insanity is causing the crash!  Don't do it!  Just think of how you are abusing the poor IPE.  What if you had a breakpoint on the Inplace Boundary and changed the boolean?  That would necessatate a copy inside an inplace structure....... NO!!!!
    Or, more to the point as best I understand: (Add duct tape adound head as needed)
    An IPE must exist in one "Clump"  Terminal Reads exisist in their own "Clump" (although you can read many terminals in one clump)  So you require a clump to read the boolean terminal inside another clump.  Clumps cannot reside in clumps since clumps are clumps that stand apart from each other by definition.  The run arrow should be broken but is not- hence LabVIEW crashes. Makes sence to me  except the clumping algorythm didn't catch the insanity and the run arrow wasn't broken.  so the next edit caused all hell to break loose.
    (If I missed domething here I am going to learn something today)
    Jeff

  • Dynamically indexing into element arrays in XPath

    Hi All,
    I have XML with multiple <message> tags wherein each <message> tag contains multiple <itemBumble> tags
    like
    <confirmationMessage>
    <message id="1">
    <itemBundle>
    </itemBundle>
    <itemBundle>
    </itemBundle>
    </message id ="2">
    <message>
    <itemBundle>
    </itemBundle>
    </message>
    </confirmationMessage>
    My PL/SQL code to process above doc is
    message_index := 1;
    document_info := selected_nodes (doc_in, '/confirmationMessage/message["message_index"]/itemBundle');
    Above code should fetch only all <itemBundle>
    nodes in 1st <message> node
    but it is fetching all <itemBundle> nodes from all <message> nodes
    What i understand is message["message_index"] is not working..
    If you use like message["2"] its working fine...
    How to index based on variable value..
    Anyboby knows ...?
    Thanks

    Hi,
    I forgot to add one statement
    selected_nodes () is user-defined function
    it is just wrap up on
    xslprocessor.selectnodes (
    xmldom.makenode (doc_in),
    xpath_in
    );

  • Dbxml:lookup-index fails with edge-element-presence

    The custom xquery function dbxml:lookup-index seems broken for edge-element-presence indices when a namespace is specified:
    dbxml> lookupedge edge-element-presence 'http://ceridwen.us/default' node11 'http://ceridwen.us/default' node1
    1 objects returned for eager index lookup 'edge-element-presence'
    dbxml> q "declare default element namespace 'http://ceridwen.us/default'; dbxml:lookup-index('test', 'node11', 'node1')"
    0 objects returned for eager expression 'declare default element namespace 'http://ceridwen.us/default'; dbxml:lookup-index('test', 'node11', 'node1')'
    dbxml> q "declare default element namespace 'http://ceridwen.us/default'; dbxml:lookup-index('test', 'node11')"
    2 objects returned for eager expression 'declare default element namespace 'http://ceridwen.us/default'; dbxml:lookup-index('test', 'node11')'Dbxml-2.5.16, OSX 10.6.4
    Edited by: jralls on Aug 22, 2010 12:22 PM

    Is this what you need?
    dbxml> listin
    Default Index: node-element-presence-none edge-element-presence-none
    Index: node-element-equality-string node-element-equality-double for node {http://ceridwen.us/test}:dataType
    Index: node-attribute-equality-string node-attribute-equality-double for node {http://ceridwen.us/test}:elemType
    Index: node-attribute-equality-string node-attribute-equality-double for node {}:first
    Index: node-attribute-equality-string node-attribute-equality-double for node {http://ceridwen.us/test}:first
    Index: edge-attribute-equality-string node-attribute-equality-string node-attribute-equality-double for node {http://www.w3c.org/1999/xlink}:href
    Index: node-element-equality-string node-element-equality-double for node {http://ceridwen.us/test}:name
    Index: unique-node-metadata-equality-string for node {http://www.sleepycat.com/2002/dbxml}:name
    Index: node-element-equality-string node-element-equality-double for node {http://ceridwen.us/default}:node11
    Index: node-element-equality-string node-element-equality-double for node {http://ceridwen.us/default}:node12
    Index: node-element-equality-string node-element-equality-double for node {http://ceridwen.us/default2}:node2
    Index: node-element-equality-string node-element-equality-double for node {http://ceridwen.us/default}:node311
    Index: node-element-equality-string node-element-equality-double for node {http://ceridwen.us/default}:node312
    Index: node-element-equality-string node-element-equality-double for node {http://ceridwen.us/default}:node321
    Index: node-element-equality-string node-element-equality-double for node {http://ceridwen.us/default}:node322
    Index: node-element-equality-string node-element-equality-double for node {http://ceridwen.us/test}:ref
    Index: edge-attribute-equality-string node-attribute-equality-string node-attribute-equality-double for node {http://www.w3c.org/1999/xlink}:role
    Index: node-attribute-equality-string node-attribute-equality-double for node {http://www.w3c.org/1999/xlink}:second
    Index: node-attribute-equality-string node-attribute-equality-double for node {http://www.w3c.org/1999/xlink}:title
    Index: node-attribute-equality-string node-attribute-equality-double for node {http://www.w3c.org/1999/xlink}:type
    20 indexes found.This comes from
        DbXml::XmlContainer cnt = sto->getContainer();
        DbXml::XmlTransaction txn = m_mgr->createTransaction();
        try {
         DbXml::XmlUpdateContext uc = m_mgr->createUpdateContext();
         std::string xlink_uri("http://www.w3c.org/1999/xlink");
         std::string href("href");
         std::string role("role");
         std::string attr_eq("edge-attribute-equality-string");
         std::string node_pr("edge-element-presence-none");
         cnt.addIndex(txn, xlink_uri, href, attr_eq, uc);
         cnt.addIndex(txn, xlink_uri, role, attr_eq, uc);
         cnt.addDefaultIndex(txn, node_pr, uc);
         txn.commit();
        catch(DbXml::XmlException& e) {
         logError() << "XmlStorage: Opening container  " << name.sstr() << "  threw "
                 << e.what() << endl;
         throw;
        }There are only two documents in the container:
    <t:TestDoc xmlns:t="http://ceridwen.us/test" t:first="an attribute" xmlns:xlink="http://www.w3c.org/1999/xlink" xlink:second="another attribute">
       This is the root node of a test document
       <t:name>The Test Document</t:name>
       <t:dataType>TestDocument</t:dataType>
       <node1 xmlns="http://ceridwen.us/default" first="a node attribute">This element has 2 subnodes
           <node11>This is the first element under node 1</node11>
           <node12>This is the second element under node 1</node12>
       </node1>
       <node2 xmlns="http://ceridwen.us/default2">This element has three text nodes</node2>
       <node2 xmlns="http://ceridwen.us/default2">This is the second text node</node2>
       <node2 xmlns="http://ceridwen.us/default2">This element is the last one</node2>
       <Table xmlns="http://ceridwen.us/default">
          <t:DataRow t:elemType="Instance">
             <node311>First List Element</node311>
             <node312>Second List Element</node312>
          </t:DataRow>
          <t:DataRow t:elemType="Instance">
             <node321>Another First List Element</node321>
             <node322>Another Second List Element</node322>
          </t:DataRow>
       </Table>
       <?XmlStorage-html default-html?>
       <!--This is a gratuitous comment for testing.-->
    </t:TestDoc>
    <t:TestDoc xmlns:t="http://ceridwen.us/test" t:first="an attribute" xmlns:xlink="http://www.w3c.org/1999/xlink" xlink:second="another attribute">
       This is the root node of a test document
       <t:name>The Test Document</t:name>
       <t:dataType>TestDocument</t:dataType>
       <node1 xmlns="http://ceridwen.us/default" first="a node attribute">
          This element has 2 subnodes
          <node11>This is the first element under node 1</node11>
          <node12>This is the second element under node 1</node12>
       </node1>
       <node2 xmlns="http://ceridwen.us/default2">This element has three text nodes</node2>
       <node2 xmlns="http://ceridwen.us/default2">This is the second text node</node2>
       <node2 xmlns="http://ceridwen.us/default2">This element is the last one</node2>
       <Table xmlns="http://ceridwen.us/default">
          <t:DataRow t:elemType="Instance">
             <node311>First List Element</node311>
             <node312>Second List Element</node312>
          </t:DataRow>
          <t:DataRow t:elemType="Instance">
             <node321>Another First List Element</node321>
             <node322>Another Second List Element</node322>
          </t:DataRow>
       </Table>
       <?XmlStorage-html default-html?>
       <!--This is a gratuitous comment for testing.-->
       <t:ref xlink:href="dbxml:/test/The%20Test%20Document00000001" xlink:role="data:text/plain,reference" xlink:title="The Test Document"xlink:type="simple"/>
    </t:TestDoc>(Aside: It would be really nice if the dbxml shell's print command had a "pretty" option!)

  • Crash when use indexe array with in place element structure

    Hello !
    I have a problem with in place element structure. I want index a waveform array (16 elements) and when i execute or save that labview close....
    I dont have problem with waveform array 15 elements or less, but i need index 16 elements...
    Thanks for your help !!!
    Solved!
    Go to Solution.
    Attachments:
    Test.PNG ‏8 KB

    I give you my code but it work because i used a waveform array with only 15 elements. I can't save or execute with 16 elements...
    So add it (like picture Test.png) and you will see.
    Thank you
    Attachments:
    Test.vi ‏25 KB

  • Index with "or" clause (BUG still exists?)

    The change log for 2.3.10 mentions "Fixed a bug that caused incorrect query plans to be generated for predicates that used the "or" operator in conjunction with indexes [#15328]."
    But looks like the Bug still exists.
    I am listing the steps to-repro. Let me know if i have missed something (or if the bug needs to be fixed)
    DATA
    dbxml> openContainer test.dbxml
    dbxml> getDocuments
    2 documents found
    dbxml> print
    <node><value>a</value></node>
    <node><value>b</value></node>
    INDEX (just one string equality index on node "value")
    dbxml> listIndexes
    Index: unique-node-metadata-equality-string for node {http://www.sleepycat.com/2002/dbxml}:name
    Index: node-element-equality-string for node {}:value
    2 indexes found.
    QUERY
    setVerbose 2 2
    preload test.dbxml
    query 'let $temp := fn:compare("test", "test") = 0
    let $results := for $i in collection("test.dbxml")
    where ($temp or $i/node[value = ("a")])
    return $i
    return <out>{$temp}{$results}</out>'
    When $temp is true i expected the result set to contain both the records, but that was not the case with the index. It works well when there is no index!
    Result WITH INDEX
    dbxml> print
    <out>true<node><value>a</value></node></out>
    Result WITHOUT INDEX
    dbxml> print
    <out>true<node><value>a</value></node><node><value>b</value></node></out>

    Hi Vijay,
    This is a completely different bug, relating to predicate expressions that do not examine nodes. Please try the following patch, to see if it fixes this bug for you:
    --- dbxml-2.3.10-original/dbxml/src/dbxml/optimizer/QueryPlanGenerator.cpp     2007-04-18 10:05:24.000000000 +0100
    +++ dbxml-2.3.10/dbxml/src/dbxml/optimizer/QueryPlanGenerator.cpp     2007-08-08 11:32:10.000000000 +0100
    @@ -1566,11 +1572,12 @@
         else if(name == Or::name) {
              UnionQP *unionOp = new (&memMgr_) UnionQP(&memMgr_);
    +          result.operation = unionOp;
              for(VectorOfASTNodes::iterator i = args.begin(); i != args.end(); ++i) {
                   PathResult ret = generate(*i, ids);
                   unionOp->addArg(ret.operation);
    +               if(ret.operation == 0) result.operation = 0;
    -          result.operation = unionOp;
         // These operators use the presence of the node arguments, not their valueJohn

  • How to populate values in to drop down by index

    Hi in my application  i have dropdownby index with label State.In that dropdown i need to populate all the states of our country like..Tamilnadu,andhraprdesh,Gujrath,Maharastra,Delhi....,and by default it should be populated with Select State ,can u please tell me the code..
    Thanks
    Kishore

    hi,
    1.in ur context create a context value node----eg: MyStates
    2.under that value node create a value attribute--eg: values.
    3.set the cardinality of "MyStates" value node to 0:n
    4.texts property of ur dropdown by index ui element shld be bound to the value attr (values).
    5.in the wdDoInit() method of ur view that has this dropdownbyindex ui element use the follwoing code,
    String    [  ]    states_array    =        new String [  ]   {"tn", "mp", "ap", "karnataka"};
    List list_for_node_elem = new ArrayList();
       for (int i =  0; i <states_array.length; ++i)
          IPrivateMyView.IMyStatesElement elem = wdContext.createMyStatesElement();
          MyStatesElement.setValues(states_array   [i ]   );
          list_for_node_elem.add(MyStatesElement);
       wdContext.nodeMyStates().bind(list_fornode_elem);
       wdContext.nodeMyStates().setLeadSelection(1);
    Regards
    Jayapriya

  • Nested IPE (In Place Element) usage when accessing Cluster/Array data via DVR

    I am sharing data across several VIs and loops via a DVR, and accessing the data via a DVR IPE. The data is a cluster of arrays. The diagram below (VI attached) illustrates the structures invloved, but not the structure of the application.
    (The diagram above does not include initialization of the arrays, as it is intended only to illustrate the Cluster1 data type. Array lengths could be 100.)
    The DVR (DVR1) is passed to multiple VIs of the application at startup.
    Each VI executes loops that either read or write particular elements of each array (fArray1 or fArray2).
    I believe the DVR IPE (B1-DVR) provides blocking so that only one task can modify the data (Cluster1) at any time.
    Case 1 illustrates how I currently WRITE to array elements. The outer IPE (block B1) is rolled into a VI (not shown) that takes DVR1, Index, and Value as inputs.
    Cases 2 - 4 illustrate 3 additional methods that remove one or both of the inner IPEs (B2-Cluster and B3-Array).
    Case 2: IPE B3 (Array Index/Replace Elements) is replaced with a non-IPE 'Replace Array Subset'.'
    Case 3: IPE B2 (Unbundle / Bundle Elemnts)' is replaced with a non-IPE cluster 'Unbundle'/'Bundle'.
    Case 4: removes both B2 and B3.
    I implemented case 1 a long time ago.  When I had to do the same thing again recently, I did case 4.  When I stumbled across my earlier implementation, I was a bit suprised
    Which of the 4 cases should take the least time (or resources) to execute? I think case 4 has as few array allocations as any of the other 3.
    The attached image did not capture the Buffer Allocation marks, so I marked the ones that differed with a red "B".
    I am only interested in differences in how the arrays are handled, so I see no signioficant differences.
    Is this one of those cases where LV doesn't need my help?
    Incidently, I recently wrote a small app with shared data and decided to try FGVs to share array data.  For small arrays, 10^7 iterations, and an FGV based array-element read followed by a element write, the FGV was faster.  1.2us per read/write for FGV vs 3us per r/w for an DVR/IPE based read/write (like above).
    Peter
    LV 2011 SP1, Windows 7 64-Bit
    Attachments:
    IPE.vi ‏9 KB

    Option 1 is a definite no and as far as I know it has been NI's explicit intention to steer clear from it. I believe there's an idea in the IE which asks for this.
    I agree that option 2 makes sense, but I don't think it should be something the user specifies. Either LV can detect it automatically or it can't, but I doubt NI would let you have an option which creates the possibility for this kind of bug.
    I'm not sure, but the mark as modifier option on the IPES might be the option you're looking for. I know that it exists and I know very roughly what it does, but the documentation for it is very limited and I never actually played around with it, as usually I don't need these kinds of optimizations.
    You may well be right that a new option on the IPES is desirable and you should probably add it to the idea exchange.
    As for NIWeek, I'm not going this year, so I have no idea what kinds of sessions are around, but it's a great place to find people who know what they're talking about and ask them about it directly. Certain people in LV R&D would probably be ideal for this and if you ask relevant people, you might even get their names. I'm sure buying them a beer would also help to loosen their tounges. If you ask me, this type of interaction is the main value of the conference, not the sessions themselves.
    Try to take over the world!

  • How to get the last element of a structure in a textfield in DesignStudio

    Hello,
    how can I get the last element of a structure within a bex query?
    Within the structure we are working with dates that dynamically are buiId (input date - offsets for several months).
    I have to show the last value in a single textfield within DesignStudio.
    Regards
    Frank

    Hi Frank,
    in DS 1.3 you can use forEach function to get the last element of BEx structure (or n-th element in general using if condition)
    var array = DS_CROSSTAB1.getMembers("DHGY5D6XEFO1K45SB00BXFH7A",10);
    var lastMember="";
    array.forEach(function(element, index) {
           lastMember = element.text;
    TEXT_1.setText("Last structure element: "+lastMember);

  • Query time lengthened after additional indexes added

    I had been frequently getting results from my query in about .5 - 1.5 seconds. However, I added additional indexes to my container on fields that I am not even using in my query at the moment. When I did this, my query went to about 35 seconds. Can anyone tell me how to fix this problem
    Here is my query:
    for $record in collection("Catalog.dbxml")
    /*[T245[contains(.,"augustine") or contains(.,"Augustine") or contains(.,"AUGUSTINE")]] return $record
    Here are my indexes:
    Index: node-element-substring-string for node {}:T050
    Index: node-element-substring-string for node {}:T090
    Index: node-element-substring-string for node {}:T100
    Index: node-element-substring-string for node {}:T110
    Index: node-element-substring-string for node {}:T111
    Index: node-element-substring-string for node {}:T245
    Index: node-element-substring-string for node {}:T246
    Index: node-element-substring-string for node {}:T700
    Index: node-element-substring-string for node {}:T710
    Index: node-element-substring-string for node {}:T711
    Here is my queryplan:
    <XQuery>
    <Navigation>
    <QueryPlanFunction result="collection" container="Catalog5.dbxml">
    <OQPlan>n(V(node-element-substring-string,T245,=,'ine'),V(node-element-substring-string,T245,=,'tin'),V(node-element-substring-string,T245,=,'sti'),V(node-element-substring-string,T245,=,'ust'),V(node-element-substring-string,T245,=,'gus'),V(node-element-substring-string,T245,=,'aug'),V(node-element-substring-string,T245,=,'ugu'))</OQPlan>
    </QueryPlanFunction>
    <Step axis="child" uri="*" name="*" nodeType="element"/>
    <DbXmlFilter>
    <Navigation>
    <Step axis="child" name="T245" nodeType="element">
    <Predicates>
    <Operator name="or">
    <Navigation>
    <DbXmlContains>
    <OQPlan>n(V(node-element-substring-string,T245,=,'ugu'),V(node-element-substring-string,T245,=,'gus'),V(node-element-substring-string,T245,=,'ine'),V(node-element-substring-string,T245,=,'sti'),V(node-element-substring-string,T245,=,'tin'),V(node-element-substring-string,T245,=,'ust'),V(node-element-substring-string,T245,=,'aug'))</OQPlan>
    <Sequence>
    <AnyAtomicTypeConstructor value="augustine" typeuri="http://www.w3.org/2001/XMLSchema" typename="string"/>
    </Sequence>
    </DbXmlContains>
    </Navigation>
    <Navigation>
    <DbXmlContains>
    <OQPlan>n(V(node-element-substring-string,T245,=,'ine'),V(node-element-substring-string,T245,=,'tin'),V(node-element-substring-string,T245,=,'ust'),V(node-element-substring-string,T245,=,'sti'),V(node-element-substring-string,T245,=,'gus'),V(node-element-substring-string,T245,=,'ugu'),V(node-element-substring-string,T245,=,'aug'))</OQPlan>
    <Sequence>
    <AnyAtomicTypeConstructor value="Augustine" typeuri="http://www.w3.org/2001/XMLSchema" typename="string"/>
    </Sequence>
    </DbXmlContains>
    </Navigation>
    <Navigation>
    <DbXmlContains>
    <OQPlan>n(V(node-element-substring-string,T245,=,'ust'),V(node-element-substring-string,T245,=,'aug'),V(node-element-substring-string,T245,=,'ugu'),V(node-element-substring-string,T245,=,'gus'),V(node-element-substring-string,T245,=,'tin'),V(node-element-substring-string,T245,=,'sti'),V(node-element-substring-string,T245,=,'ine'))</OQPlan>
    <Sequence>
    <AnyAtomicTypeConstructor value="AUGUSTINE" typeuri="http://www.w3.org/2001/XMLSchema" typename="string"/>
    </Sequence>
    </DbXmlContains>
    </Navigation>
    </Operator>
    </Predicates>
    </Step>
    </Navigation>
    </DbXmlFilter>
    </Navigation>
    </XQuery>

    Hi Andrew,
    You experience surprises me a little - I'd like to look into reproducing what you are seeing.
    Can you tell me which indexes you had to start with and which indexes you then added to cause the slow down? Is it possible for you to send me some sample data that exhibits this behavior - either the XML, or your container? If so, can you upload it to ftp.sleepycat.com/incoming and let me know what you've named the file.
    Thanks,
    John

Maybe you are looking for