<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>