[mythtv-commits] Ticket #10447: Program Listing SQL Optimization
MythTV
noreply at mythtv.org
Tue Mar 13 20:04:34 UTC 2012
#10447: Program Listing SQL Optimization
-------------------------------+----------------------------------
Reporter: fracmak@… | Type: Developer Task
Status: new | Priority: minor
Milestone: unknown | Component: MythTV - General
Version: Master Head | Severity: low
Keywords: | Ticket locked: 0
-------------------------------+----------------------------------
I've been playing with this change on my local mythweb with enormous (2 to
3x) performance improvements (Ticket #10047). Currently, when a query is
made on the program listing table, the best suited index is as follows:
id_start_end (chanid, starttime, endtime)
but if the chanid range gets to be too large, the server could pick a
different query. Sometimes it'll use the PRIMARY(chanid, starttime,
manualid) or starttime(starttime) indexes. None of these though take into
account endtime.
Because of the fact we only use starttime < endtime as a limit on the
starttime field, means a large number of unnecessary entries need to be
loaded to check the endtime. This becomes incredibly apparent when you try
and load more than 70 channels on my system, at which point the
performance gets significantly worse.
To get around this, I put a max cap on the starttime entry, since this is
the field most likely to be used in the index. According to my own
calculations, no program lasts longer than 12 hours on my system, but I
made the query cap 24 hours just to be safe.
Adding this cap has resulted in a substantial jump in performance.
--
Ticket URL: <http://code.mythtv.org/trac/ticket/10447>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center
More information about the mythtv-commits
mailing list