Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 8 of 8 total
Thread Getting a Plan from TDBISAMTable
Fri, Jun 17 2016 8:02 AMPermanent Link

Matthew Jones

Is there a way to "get the plan" from a DBISAM Table component? I am
doing an export from DBISAM to JSON, and thus traversing a load of
tables. There are sub-tables linked with the MasterSource mechanism,
and also some where I do a Locate to find a value.

If these were SQL, I'd ask for the plan, and would be able to see where
it says "non-optimal" and add the appropriate index to speed things up.
But this is tables, and I can't see a way to get that. Is this
possible? One real-date export is taking 5 mins and that seems way too
slow to me.

--

Matthew Jones
Fri, Jun 17 2016 8:50 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Matthew

>Is there a way to "get the plan" from a DBISAM Table component? I am
>doing an export from DBISAM to JSON, and thus traversing a load of
>tables. There are sub-tables linked with the MasterSource mechanism,
>and also some where I do a Locate to find a value.
>
>If these were SQL, I'd ask for the plan, and would be able to see where
>it says "non-optimal" and add the appropriate index to speed things up.
>But this is tables, and I can't see a way to get that. Is this
>possible? One real-date export is taking 5 mins and that seems way too
>slow to me.

The nearest you can get is to convert the filter into a query and run that.

Make sure any of the fields used in links or locates have an index. If you're using a multi field index and VarArrayOf that can also slow things down (or at least it did in the neolithic when I used DBISAM)

You don't say if this is on a local machine or over a network. If over a network than transport costs could be a large part of it. Running it locally should give an indication of that.

Depending on how you're building the JSON and what size it is that could also have an impact. I sort of remember one component (a treeview) where I build a load of empty nodes and then populated them , setting the parent as I went. It sped the whole process up by a factor of 3 or 4.

Sorry I can't be of more help.

Roy Lambert
Fri, Jun 17 2016 8:54 AMPermanent Link

Matthew Jones

Roy Lambert wrote:

> The nearest you can get is to convert the filter into a query and run
> that.
>
> Make sure any of the fields used in links or locates have an index.
> If you're using a multi field index and VarArrayOf that can also slow
> things down (or at least it did in the neolithic when I used DBISAM)
>
> You don't say if this is on a local machine or over a network. If
> over a network than transport costs could be a large part of it.
> Running it locally should give an indication of that.
>
> Depending on how you're building the JSON and what size it is that
> could also have an impact. I sort of remember one component (a
> treeview) where I build a load of empty nodes and then populated them
> , setting the parent as I went. It sped the whole process up by a
> factor of 3 or 4.

Thanks - that is very helpful really. Tells me not to bother worrying.
This is an export to a new system (using WebBuilder front end) so it
actually doesn't matter if it takes 5 mins as it is a one-off process.
It is all local, so that isn't a concern. So long as I've not missed
anything obvious, I'm happy.

--

Matthew Jones
Fri, Jun 17 2016 9:20 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Matthew


>Thanks - that is very helpful really. Tells me not to bother worrying.
>This is an export to a new system (using WebBuilder front end) so it
>actually doesn't matter if it takes 5 mins as it is a one-off process.
>It is all local, so that isn't a concern. So long as I've not missed
>anything obvious, I'm happy.

Thought it might be EWB when you started using swearwords like JSON

Roy
Fri, Jun 17 2016 10:22 AMPermanent Link

Matthew Jones

Roy Lambert wrote:

> swearwords like JSON

LOL. One day you too will be using it as your standard. It isn't ideal,
but it works well for most purposes. You can always fall back to XML
for more precision.

--

Matthew Jones
Fri, Jun 17 2016 11:25 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Matthew

>> swearwords like JSON
>
>LOL. One day you too will be using it as your standard. It isn't ideal,
>but it works well for most purposes. You can always fall back to XML
>for more precision.

I do use it - I had to for my movies database - I updated my stringtable to cope with JSON and XML - squiggly brackets are a device of the devil!

Roy
Fri, Jun 17 2016 11:52 AMPermanent Link

Matthew Jones

Roy Lambert wrote:

> squiggly brackets are a device of the devil!

I have a browser tab permanently at jsonlint.com for checking validity!

--

Matthew Jones
Fri, Jun 17 2016 5:28 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Matthew,

<< Is there a way to "get the plan" from a DBISAM Table component? I am doing an export from DBISAM to JSON, and thus traversing a load of tables. There are sub-tables linked with the MasterSource mechanism,
and also some where I do a Locate to find a value. >>

The quick answer is no.  You can get an approximation for filters via this property, but not for Locates:

http://www.elevatesoft.com/manual?action=viewprop&id=dbisam4&product=rsdelphi&version=XE&comp=TDBISAMDataSet&prop=FilterOptimizeLevel

However, locates that don't use the active index *do* end up using a filter, so you could use this property along with an expression filter to approximate the result that you're looking for.

Tim Young
Elevate Software
www.elevatesoft.com
Image