Add force index in report mysql request to avoid full scan table

This commit is contained in:
Nicolas Le Goff
2012-11-14 16:58:16 +01:00
parent 291e46c21a
commit 3c318c5c6e
8 changed files with 72 additions and 76 deletions

View File

@@ -113,8 +113,8 @@ class module_report_activity extends module_report
$sql = "
SELECT DATE_FORMAT( log.date, '%k' ) AS heures, SUM(1) AS nb
FROM (log)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
FROM log FORCE INDEX (date_site)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
WHERE " . $date_filter['sql'] . "
AND " . $coll_filter['sql'] . "
AND " . $site_filter['sql'] . "
@@ -179,8 +179,8 @@ class module_report_activity extends module_report
SELECT DATE_FORMAT(log_search.date,'%Y-%m-%d %H:%i:%S') as date ,
log_search.search ,log_search.results
FROM (log_search)
INNER JOIN log ON (log.id = log_search.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN log FORCE INDEX (date_site) ON (log.id = log_search.log_id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
WHERE log_search.date > " . $date_filter['sql'] . "
AND log.`" . $what . "` = :main_value
AND " . $site_filter['sql'] . "
@@ -244,8 +244,8 @@ class module_report_activity extends module_report
SUM(1) as nb,
ROUND(avg(results)) as nb_rep
FROM (log_search)
INNER JOIN log ON (log_search.log_id = log.id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN log FORCE INDEX (date_site) ON (log_search.log_id = log.id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
WHERE " . $date_filter['sql'] . "
AND log_search.search != 'all'
AND (" . $coll_filter['sql'] . ")";
@@ -315,8 +315,8 @@ class module_report_activity extends module_report
SELECT log_docs.record_id,
log_docs.date, log_docs.final as objets
FROM (`log_docs`)
INNER JOIN log ON (log_docs.log_id = log.id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN log FORCE INDEX (date_site) ON (log_docs.log_id = log.id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
INNER JOIN record ON (log_docs.record_id = record.record_id)
WHERE log_docs.action = 'download'
AND " . $date_filter['sql'] . "
@@ -393,8 +393,8 @@ class module_report_activity extends module_report
final
FROM (log_docs)
INNER JOIN record ON (record.record_id = log_docs.record_id)
INNER JOIN log ON (" . $site_filter['sql'] . " AND log.id = log_docs.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN log FORCE INDEX (date_site) ON (" . $site_filter['sql'] . " AND log.id = log_docs.log_id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
LEFT JOIN subdef AS s ON (s.record_id = log_docs.record_id AND s.name = log_docs.final)
WHERE " . $date_filter['sql'] . "
AND (log_docs.final != 'caption')
@@ -489,12 +489,12 @@ class module_report_activity extends module_report
SELECT DISTINCT(log." . $on . ") as " . $on . ",
usrid,
SUM(1) as connexion
FROM (log)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
FROM log FORCE INDEX (date_site)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
WHERE log.user != 'API'
AND " . $site_filter['sql'] . "
AND " . $date_filter['sql'] . "
AND (" . $coll_filter['sql'] . ")
AND " . $coll_filter['sql'] . "
GROUP BY " . $on . "
ORDER BY connexion DESC ";
@@ -589,10 +589,10 @@ class module_report_activity extends module_report
final, sum(1) as nb,
sum(size) as poid
FROM (log_docs as d)
INNER JOIN log ON (" . $site_filter['sql'] . "
INNER JOIN log FORCE INDEX (date_site) ON (" . $site_filter['sql'] . "
AND log.id = d.log_id
AND " . $date_filter['sql'] . ")
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
INNER JOIN record ON record.record_id = d.record_id
LEFT JOIN subdef as s on ((d.action = 'download' OR d.action = 'mail')
AND s.record_id=d.record_id and s.name=d.final
@@ -712,10 +712,10 @@ class module_report_activity extends module_report
$sql = "
SELECT log.usrid, log.user , d.final as getter, d.record_id, d.date, s.*
FROM (log_docs as d)
INNER JOIN log ON (" . $site_filter['sql'] . "
INNER JOIN log FORCE INDEX (date_site) ON (" . $site_filter['sql'] . "
AND log.id = d.log_id
AND " . $date_filter['sql'] . ")
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
INNER JOIN record ON (record.record_id = d.record_id)
LEFT JOIN subdef as s ON (s.record_id=d.record_id and s.name='document')
WHERE ((" . $coll_filter['sql'] . ") AND " . $record_filter['sql'] . " AND d.action='push')
@@ -781,10 +781,10 @@ class module_report_activity extends module_report
$sql = "
SELECT log.usrid, user, final, sum(1) AS nb, sum(size) AS poid
FROM (log_docs AS log_date)
INNER JOIN log ON (log.site = :site_id
INNER JOIN log FORCE INDEX (date_site) ON (log.site = :site_id
AND log.id = log_date.log_id
AND " . $datefilter['sql'] . ")
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
LEFT JOIN subdef AS s ON (log_date.action = 'download'
AND s.record_id = log_date.record_id
AND s.name = log_date.final
@@ -856,10 +856,10 @@ class module_report_activity extends module_report
$sql = "
SELECT log_date.id, HOUR(log_date.date) as heures
FROM (log as log_date)
INNER JOIN log_colls ON (log_date.id = log_colls.log_id)
FROM log as log_date FORCE INDEX (date_site)
INNER JOIN log_colls FORCE INDEX (couple) ON (log_date.id = log_colls.log_id)
WHERE " . $datefilter['sql'] . "
AND (" . $collfilter['sql'] . ")
AND " . $collfilter['sql'] . "
AND log_date.site = :site_id";
$stmt = $conn->prepare($sql);
@@ -899,7 +899,7 @@ class module_report_activity extends module_report
SELECT DISTINCT (
DATE_FORMAT( log_date.date, '%Y-%m-%d' )
) AS ddate, COUNT( DATE_FORMAT( log_date.date, '%d' ) ) AS activity
FROM log as log_date INNER JOIN log_colls ON (log_date.id = log_colls.log_id)
FROM log as log_date FORCE INDEX (date_site) INNER JOIN log_colls FORCE INDEX (couple) ON (log_date.id = log_colls.log_id)
WHERE " . $datefilter['sql'] . "
AND log_date.site = :site_id
AND (" . $collfilter['sql'] . ")
@@ -938,8 +938,8 @@ class module_report_activity extends module_report
$sql = "
SELECT log_date.usrid, log_date.user, sum(1) AS nb
FROM (`log_search`)
INNER JOIN log as log_date ON (log_search.log_id = log_date.id)
INNER JOIN log_colls ON (log_date.id = log_colls.log_id)
INNER JOIN log as log_date FORCE INDEX (date_site) ON (log_search.log_id = log_date.id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log_date.id = log_colls.log_id)
WHERE " . $datefilter['sql'] . "
AND log_date.site = :site_id
AND (" . $collfilter['sql'] . ")
@@ -979,8 +979,8 @@ class module_report_activity extends module_report
log_date.user,
sum(1) AS nb
FROM (`log_search`)
INNER JOIN log as log_date ON (log_search.log_id = log_date.id)
INNER JOIN log_colls ON (log_date.id = log_colls.log_id)
INNER JOIN log as log_date FORCE INDEX (date_site) ON (log_search.log_id = log_date.id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log_date.id = log_colls.log_id)
WHERE " . $datefilter['sql'] . "
AND log_date.site = :site_id
AND (" . $collfilter['sql'] . ")
@@ -1017,8 +1017,8 @@ class module_report_activity extends module_report
$sql = "
SELECT referrer, COUNT(referrer) as nb_view
FROM (log_view)
INNER JOIN log as log_date ON (log_view.log_id = log_date.id)
INNER JOIN log_colls ON (log_date.id = log_colls.log_id)
INNER JOIN log as log_date FORCE INDEX (date_site) ON (log_view.log_id = log_date.id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log_date.id = log_colls.log_id)
WHERE " . $datefilter['sql'] . "
AND (" . $collfilter['sql'] . ")
GROUP BY referrer
@@ -1059,8 +1059,8 @@ class module_report_activity extends module_report
DATE_FORMAT( log_date.date, '%Y-%m-%d' )
) AS ddate, COUNT( DATE_FORMAT( log_date.date, '%d' ) ) AS activity
FROM (log_docs as log_date)
INNER JOIN log ON (log_date.log_id = log.id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN log FORCE INDEX (date_site) ON (log_date.log_id = log.id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
WHERE " . $datefilter['sql'] . " AND log_date.action = 'add'
AND (" . $collfilter['sql'] . ")
GROUP BY ddate
@@ -1093,8 +1093,8 @@ class module_report_activity extends module_report
DATE_FORMAT( log_date.date, '%Y-%m-%d' )
) AS ddate, COUNT( DATE_FORMAT( log_date.date, '%d' ) ) AS activity
FROM (log_docs as log_date)
INNER JOIN log ON log_date.log_id = log.id
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN log FORCE INDEX (date_sit) ON log_date.log_id = log.id
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
WHERE " . $datefilter['sql'] . " AND log_date.action = 'edit'
AND (" . $collfilter['sql'] . ")
GROUP BY ddate
@@ -1126,8 +1126,8 @@ class module_report_activity extends module_report
$sql = "
SELECT log.usrid, log.user, sum( 1 ) AS nb
FROM (log_docs as log_date)
INNER JOIN log ON (log_date.log_id = log.id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN log FORCE INDEX (date_site) ON (log_date.log_id = log.id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
WHERE " . $datefilter['sql'] . " AND log_date.action = 'add'
AND (" . $collfilter['sql'] . ")
GROUP BY log.usrid

View File

@@ -148,12 +148,12 @@ class module_report_connexion extends module_report
$params = array_merge($params, $datefilter['params'], $collfilter['params']);
$finalfilter = $datefilter['sql'] . ' AND ';
$finalfilter .= '(' . $collfilter['sql'] . ') AND ';
$finalfilter .= $collfilter['sql'] . ' AND ';
$finalfilter .= 'log_date.site = :site_id';
$sql = "SELECT COUNT(usrid) as nb
FROM (log as log_date)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
FROM log as log_date FORCE INDEX (date_site)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
WHERE " . $finalfilter;
$stmt = $conn->prepare($sql);

View File

@@ -187,12 +187,11 @@ class module_report_download extends module_report
$sql = '
SELECT SUM(1) AS nb
FROM (log)
FROM log FORCE INDEX (date_site)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
INNER JOIN log_docs as log_date ON (log.id = log_date.log_id)
INNER JOIN record ON (log_date.record_id = record.record_id)
WHERE (
' . $finalfilter . '
)
WHERE ' . $finalfilter . '
AND (
log_date.action = \'download\'
OR log_date.action = \'mail\'

View File

@@ -69,18 +69,15 @@ class module_report_nav extends module_report
$report_filter = $filter->getReportFilter();
$coll_filter = $filter->getCollectionFilter();
$site_filter = $filter->getGvSitFilter();
$params = array_merge($report_filter['params'], $coll_filter['params'], $site_filter['params']);
$params = array_merge($report_filter['params']);
$sql = '
SELECT
SUM(1) AS total
FROM (log)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
WHERE (' . $report_filter['sql'] . '
AND nav != TRIM(\'\')
)
AND ' . $site_filter['sql'] . '
AND (' . $coll_filter['sql'] . ')';
FROM log FORCE INDEX (date_site)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
WHERE ' . $report_filter['sql'] . ' AND nav != ""
';
$stmt = $s->getConnBas()->prepare($sql);
$stmt->execute($params);

View File

@@ -54,8 +54,8 @@ class module_report_sqlaction extends module_report_sql implements module_report
"
SELECT log.usrid, log.user , d.final as getter, d.record_id, d.date, s.*
FROM (log_docs as d)
INNER JOIN log ON (" . $site_filter['sql'] . " AND log.id = d.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN log FORCE INDEX (date_site) ON (" . $site_filter['sql'] . " AND log.id = d.log_id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
INNER JOIN record ON (record.record_id = d.record_id)
LEFT JOIN subdef as s ON (s.record_id=d.record_id and s.name='document')
WHERE";
@@ -87,8 +87,8 @@ class module_report_sqlaction extends module_report_sql implements module_report
as " . $this->groupby . ",
SUM(1) as nombre
FROM (log_docs as d)
INNER JOIN log ON (" . $site_filter['sql'] . " AND log.id = d.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN log FORCE INDEX (date_site) ON (" . $site_filter['sql'] . " AND log.id = d.log_id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
INNER JOIN record ON (record.record_id = d.record_id)
LEFT JOIN subdef as s ON (s.record_id=d.record_id and s.name='document')
WHERE ";
@@ -123,10 +123,10 @@ class module_report_sqlaction extends module_report_sql implements module_report
$sql = "
SELECT DISTINCT(" . $this->getTransQuery($field) . ") as val
FROM (log_docs as d)
INNER JOIN log ON (" . $site_filter['sql'] . "
INNER JOIN log FORCE INDEX (date_site) ON (" . $site_filter['sql'] . "
AND log.id = d.log_id
AND " . $date_filter['sql'] . ")
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
INNER JOIN record ON (record.record_id = d.record_id)
LEFT JOIN subdef as s ON (s.record_id=d.record_id AND s.name='document')
WHERE ";

View File

@@ -61,8 +61,8 @@ class module_report_sqlconnexion extends module_report_sql implements module_rep
$this->sql = "
SELECT TRIM(" . $this->getTransQuery($this->groupby) . ")
as " . $this->groupby . ", SUM(1) as nb
FROM (log)
INNER JOIN log_colls ON (log.id = log_colls.log_id)";
FROM log FORCE INDEX (date_site)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)";
if ($report_filter['sql'])
$this->sql .= " WHERE " . $report_filter['sql'];
@@ -86,8 +86,8 @@ class module_report_sqlconnexion extends module_report_sql implements module_rep
$sql = '
SELECT DISTINCT(' . $this->getTransQuery($field) . ') as val
FROM (log)
INNER JOIN log_colls ON (log.id = log_colls.log_id)';
FROM log FORCE INDEX (date_site)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)';
if ($report_filter['sql'])
$sql .= ' WHERE ' . $report_filter['sql'];

View File

@@ -52,9 +52,9 @@ class module_report_sqldownload extends module_report_sql implements module_repo
log_docs.record_id,
log_docs.final,
log_docs.comment
FROM (log)
FROM log FORCE INDEX (date_site)
INNER JOIN log_docs ON (log.id = log_docs.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
INNER JOIN record ON (log_docs.record_id = record.record_id)
WHERE ";
@@ -88,9 +88,9 @@ class module_report_sqldownload extends module_report_sql implements module_repo
subdef.size,
subdef.file,
subdef.mime
FROM (log)
FROM log FORCE INDEX (date_site)
INNER JOIN log_docs ON (log.id = log_docs.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
INNER JOIN record ON (log_docs.record_id = record.record_id)
INNER JOIN subdef ON (log_docs.record_id = subdef.record_id AND subdef.name = log_docs.final)
WHERE
@@ -100,9 +100,9 @@ class module_report_sqldownload extends module_report_sql implements module_repo
SELECT
TRIM(' . $field . ') AS ' . $name . ',
SUM(1) AS telechargement
FROM ( log )
FROM log FORCE INDEX (date_site)
INNER JOIN log_docs ON (log.id = log_docs.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
INNER JOIN record ON (log_docs.record_id = record.record_id)
INNER JOIN subdef ON ( log_docs.record_id = subdef.record_id AND subdef.name = log_docs.final)
WHERE';
@@ -112,9 +112,9 @@ class module_report_sqldownload extends module_report_sql implements module_repo
SELECT
TRIM( ' . $this->getTransQuery($this->groupby) . ') AS ' . $name . ',
SUM(1) AS nombre
FROM ( log )
FROM log FORCE INDEX (date_site)
INNER JOIN log_docs ON (log.id = log_docs.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
INNER JOIN record ON (log_docs.record_id = record.record_id)
INNER JOIN subdef ON (record.record_id = subdef.record_id AND subdef.name = "document")
WHERE ';
@@ -154,9 +154,9 @@ class module_report_sqldownload extends module_report_sql implements module_repo
$sql = '
SELECT DISTINCT( ' . $this->getTransQuery($field) . ' ) AS val
FROM (log)
FROM log FORCE INDEX (date_site)
INNER JOIN log_docs ON (log.id = log_docs.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
INNER JOIN record ON (log_docs.record_id = record.record_id)
INNER JOIN subdef ON (log_docs.record_id = subdef.record_id)
WHERE ';

View File

@@ -44,8 +44,8 @@ class module_report_sqlquestion extends module_report_sql implements module_repo
activite,
fonction
FROM (`log_search`)
INNER JOIN log ON (log.id = log_search.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)";
INNER JOIN log FORCE INDEX (date_site) ON (log.id = log_search.log_id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)";
$this->sql .= " WHERE " . $report_filter['sql'];
@@ -63,8 +63,8 @@ class module_report_sqlquestion extends module_report_sql implements module_repo
TRIM(" . $this->getTransQuery($this->groupby) . ") as " . $this->groupby . ",
SUM(1) as nb
FROM (`log_search`)
INNER JOIN log ON (log.id = log_search.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN log FORCE INDEX (date_site) ON (log.id = log_search.log_id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
";
$this->sql .= " WHERE " . $report_filter['sql'];
@@ -89,8 +89,8 @@ class module_report_sqlquestion extends module_report_sql implements module_repo
$sql = "
SELECT DISTINCT(" . $this->getTransQuery($field) . ") as val
FROM (`log_search`)
INNER JOIN log ON (log.id = log_search.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN log FORCE INDEX (date_site) ON (log.id = log_search.log_id)
INNER JOIN log_colls FORCE INDEX (couple) ON (log.id = log_colls.log_id)
";
if ($report_filter['sql'])