<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=iso-8859-1"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=NO-BOK link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span lang=EN-US>Hi,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>First of all, thank you for Mapserver and all of the documentation. It’s really a great product.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>I’m having some performance issues when querying on a column in MapScript.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>I use the following code:<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:black'>$oResult = @$oLayerObject->queryByAttributes(<span style='background:silver;mso-highlight:silver'>$strField</span>, $strSearchString, MS_SINGLE);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:black'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:black'>Where $strField can for instance be “Point_ID” and $strSearchString can be something like “HEG1” . I only need one result, as the column is the primary key for the table, and is unique. </span><span lang=EN-US><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>The tables I’m searching through is of MapInfo *.tab format, has about 50’000 records, and the actual columns are indexed.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Each lookup with PHP MapScript takes about 1.5 seconds. I’ve uploaded the data into a PostGIS-database, and I can find the actual record in about 0.03 seconds.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>My mapfile definition of the layers looks like this:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal style='margin-left:35.4pt'><span lang=EN-US>LAYER<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               NAME Traseer<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               PROJECTION<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                  "init=epsg:32632"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               END<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               GROUP TelMe<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               METADATA<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               "wfs_title"                                         "Traseer"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               "wfs_srs"                                           "EPSG:32632"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               "gml_featureid"                              "Trace_ID"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               "gml_include_items"    "Trace_ID,Type"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               END<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               TYPE LINE<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               CONNECTIONTYPE OGR<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               CONNECTION "TM_Nett/TM_Traces.TAB"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               STYLEITEM "AUTO"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               maxscaledenom 300000<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               TEMPLATE "ttt_query.html"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               DUMP TRUE<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               CLASS<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               NAME "Traseer"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                                               SYMBOL "default-circle"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                                               COLOR 255 0 0<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                                               #SIZE 6<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               END<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                END # Layer<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal style='text-indent:35.4pt'><span lang=EN-US>LAYER<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               NAME Punkter<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               GROUP TelMe<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               METADATA<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               "wfs_title"                                         "Punkter"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               "wfs_srs"                                           "EPSG:32632"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               "gml_featureid"                              "Point_ID"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               "gml_include_items"    "all"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               "gml_exclude_items"   "rowid#"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               "wms_title"                                      "Punkter"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               "wms_srs"                                         "EPSG:32632"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               END<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               PROJECTION<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                  "init=epsg:32632"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               END<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               DUMP TRUE<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               TYPE POINT<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               CONNECTIONTYPE OGR<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               CONNECTION "TM_Nett/TM_Points.TAB"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               CLASSITEM "Type"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               CLASS<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               maxscaledenom 1000<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               TEMPLATE "ttt_query.html"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               EXPRESSION "TRASE SPLIT"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               NAME "Trasedeling"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               STYLE<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                                 SYMBOL 'circle' <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                                 SIZE 8<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                                 COLOR -1 -1 -1 #Usynlig<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               END<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               END<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               CLASS<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               maxscaledenom 3000<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               TEMPLATE "ttt_query.html"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               EXPRESSION /NEXANS WTC*/<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               NAME "WTC-Bokser"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               STYLE<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                                 SYMBOL 'square'<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                                 SIZE 12<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                                 COLOR 255 128 0 #Orange<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                                               OUTLINECOLOR 0 0 0<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               END<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               END<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               CLASS<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               maxscaledenom 10000<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               TEMPLATE "ttt_query.html"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               EXPRESSION /NODE*/<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               NAME "Node"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               STYLE<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                                 SYMBOL 'house'<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                                 SIZE 16<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                                 COLOR 255 128 0 #Orange<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                                               OUTLINECOLOR 0 0 0<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               END<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               END<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               CLASS<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               maxscaledenom 1000<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               TEMPLATE "ttt_query.html"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               NAME "TelMe_Punkter"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               STYLE<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                                 SYMBOL 'circle' <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                                 SIZE 6<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                                 COLOR 255 128 0 #ORANGE<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                                               OUTLINECOLOR 0 0 0<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                               END<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                               END<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                END # Layer<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>My question would be: Why is MapScript not taking the advantage of the existing index on the MapInfo *.tab files, and takes 50 times longer than the PostGIS queries?<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Thanks in advance,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Håkon<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>