This is a migrated thread and some comments may be shown as answers.

Table Appointments have many rows... load is slow

3 Answers 188 Views
Scheduler and Reminder
This is a migrated thread and some comments may be shown as answers.
Stim24
Top achievements
Rank 1
Stim24 asked on 27 Jan 2019, 02:39 PM

I have Appointments table (name table is "Plan"). This table have are 83092 rows. (This data on 2015-2019 years)

Next code working very slow(near 2 minutes).

How can Scheduler get rows from DataSet, on selecting date in SchedulerNavigator?

 

AppointmentMappingInfo planmapping = new AppointmentMappingInfo();
           this.schedulerBindingDataSource1.EventProvider.DataSource = this.planBindingSource;
           planmapping.Description = "Comment";
           planmapping.End = "DateEnd";
           planmapping.MasterEventId = "MasterEventID";
           planmapping.RecurrenceRule = "RecurrenceRule";
           planmapping.ResourceId = "id_PlanType";
           planmapping.Start = "Date";
           planmapping.Summary = "LastName";
           planmapping.UniqueId = "id";
           planmapping.FindBySchedulerProperty("ResourceId").ConvertToDataSource = ConvertResourceToDataSource;
           planmapping.FindBySchedulerProperty("ResourceId").ConvertToScheduler = ConvertResourceToScheduler;
           this.schedulerBindingDataSource1.EventProvider.Mapping = planmapping;
           ResourceMappingInfo plantypeMapping = new ResourceMappingInfo();
           plantypeMapping.Name = "Name";
           plantypeMapping.Id = "id";
           this.schedulerBindingDataSource1.ResourceProvider.DataSource = this.medClinicDataSet.PlanType;
           this.radScheduler1.DataSource = this.schedulerBindingDataSource1;
            
           this.planTableAdapter.Connection.ConnectionString = CData.Setting.SQLConnectString();
           this.planTypeTableAdapter.Connection.ConnectionString = CData.Setting.SQLConnectString();
 
           // TODO:"medClinicDataSet.PlanType".
           this.planTypeTableAdapter.Fill(this.medClinicDataSet.PlanType);
           // TODO:  "medClinicDataSet.Plan".
           this.planTableAdapter.Fill(this.medClinicDataSet.Plan);
            this.radScheduler1.GroupType = GroupType.Resource;

3 Answers, 1 is accepted

Sort by
0
Dess | Tech Support Engineer, Principal
Telerik team
answered on 28 Jan 2019, 03:05 PM
Hello, Tim,      

To be honest, 83092 records for appointments in RadScheduler is quite a lot. In addition, we already have a known issue regarding the performance when a lot of visual cell/appointment elements are displayed simultaneously. Here is the feedback item for your reference: https://feedback.telerik.com/winforms/1372972-fix-radscheduler-slow-performance-when-scrolling-in-timeline-view-with-many-visual-cells

Is it possible to load the data on portions? In other words, extract only the records that are in the near future or past, several months forward and backward. Then, when the view is navigated close to the ranges of the already loaded data, you can extract the next relevant portion. Thus, you will obtain faster initial load time, but when you navigate to the next/previous view, extracting the next portion may require some time. As a whole, you will eliminate the initial loading of all the records which will make the scheduler slow. Is this approach suitable for your scenario? If it is not, it would be greatly appreciated if you can provide some more details about the whole scenario and goal that you are trying to achieve. Thank you in advance for your cooperation.

I am looking forward to your reply. 

Regards,
Dess | Tech Support Engineer, Sr.
Progress Telerik
Get quickly onboarded and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.
0
Jonathan
Top achievements
Rank 1
answered on 30 Apr 2019, 04:55 PM
I had the same issues.  My solution was to create a stored procedure to select only the appointments between the start date and end date of the current view, then manual fill the datatable bound to the scheduler.  Loads instantly, yet I can still navigate and see any and all my appointments throughout the many years.  I also pass the text from the search box into the stored procedure to get results matching that search, so it pulls the currently viewed dates as well as the results matching the search and loads them.  You can use a view changed event to trigger the reload, as well as a search completed event.
0
Dess | Tech Support Engineer, Principal
Telerik team
answered on 01 May 2019, 06:52 AM
Hello, Jonathan,     

I am glad that you have found a suitable solution for your case. It sounds quite promising. 

Make sure that you cast your vote for the previously referred feedback item. The more votes an item gathers, the higher its priority becomes. 

You can track its progress, subscribe for status changes and add your comments on the item as well. Thus, you will get notified once any change occurs.

Should you have further questions please let me know.
 
Regards,
Dess | Tech Support Engineer, Sr.
Progress Telerik
Get quickly onboarded and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.
Tags
Scheduler and Reminder
Asked by
Stim24
Top achievements
Rank 1
Answers by
Dess | Tech Support Engineer, Principal
Telerik team
Jonathan
Top achievements
Rank 1
Share this question
or