Otis wrote:
It reads 1 row and that shouldn't take 2 seconds to complete indeed. However it might be the data of that 1 row is huge (e.g. megabytes of data because of a blob/clob) and the time to transport that to the client and read it into the objects is sadly slower than one might think.
Is that the case? You do mention the row has a CLOB, but not the size of the data in this particular row.
Also, if you read the row separately into an entity (so not in a prefetch path but directly using an entity fetch) is it as slow as it is here? If so, if you use a .NET profiler like dottrace (jetbrains) or ants (redgate), you can see where the time is spent in .NET with respect to the query, and it will show you what is slow, e.g. ODP.NET (I assume you use oracle, from the looks of it) or our code.
Yes, I use oracle and the size of the data is a little large in the CLOB column which is used to stored resume with a lot of characters in it. Even if I read the row separately into an entity, the performance is still bad. Please find the screenshot as attached.
Whereas when I queried other entities without a CLOB/BLOB column but with a lot of prefetches, then the performance drops down. Querying them into separate entities performed better but then I would need to build relationships between these entities manually if I do not use a prefetch.
I will check on the tools you suggested but would not ORM profiler be sufficient. I read the call stack and could not find a specific area to target to improve performance. It appeared that we needed to use gen pro framework better to optimize the performance as we had already optimized our code and SQL queries.
Attachments
Filename |
File size |
Added on |
Approval |
ResumeEntity.png
|
233,418 |
13-Jun-2014 13:17.43 |
Approved |