Plugin takes too long
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 25/100
- Issue type
- Bug
- Clarity
- Needs clarification
- Activity status
- Stale
- Domain
- backend, databases, performance
Research direction
Start by reproducing the reported SQL query and compare the individual UNION sections with the combined query. Investigate the plugin's query entry point, which is not named in the issue, and use execution timings or query plans to locate the regression. Done means the address lookup is measurably faster without changing its results.
Written by the indexing model from the issue text.
Description
Since the last updates we have noticed that the plugin takes too long.
We have seen that the SQL query that takes time to execute is this
SELECT `port`.`id`,
'NetworkEquipment' AS itemtype,
`dev`.`id` AS on_device,
`dev`.`name` AS dname,
'' AS pname,
`glpi_ipaddresses`.`name` as ip,
`port`.`mac`,
`dev`.`users_id`,
INET_ATON(`glpi_ipaddresses`.`name`) AS ipnum
FROM `glpi_networkports` port
LEFT JOIN `glpi_networkequipments` dev ON (`port`.`items_id` = `dev`.`id`
AND `port`.`itemtype` = 'NetworkEquipment')
LEFT JOIN `glpi_networknames` ON (`port`.`id` = `glpi_networknames`.`items_id`)
LEFT JOIN `glpi_ipaddresses` ON (`glpi_ipaddresses`.`items_id` = `glpi_networknames`.`id`)
WHERE (`glpi_ipaddresses`.`name` IS NOT NULL AND `glpi_ipaddresses`.`name` != '') AND `glpi_ipaddresses`.`version` LIKE 4
AND (INET_ATON(`glpi_ipaddresses`.`name`) BETWEEN '123456789' AND '987654321')
AND `dev`.`is_deleted` = 0
AND `dev`.`is_template` = 0 AND ( `dev`.`entities_id` = '2' ) UNION (SELECT `port`.`id`,
'Computer' AS `itemtype`,
`port`.`items_id`,
`dev`.`name` AS dname,
`port`.`name` AS pname,
`glpi_ipaddresses`.`name` as ip,
`port`.`mac` ,`dev`.`users_id` , INET_ATON(`glpi_ipaddresses`.`name`) AS ipnum FROM `glpi_networkports` port
LEFT JOIN `glpi_computers` dev ON (`port`.`items_id` = `dev`.`id`
AND `port`.`itemtype` = 'Computer')
LEFT JOIN `glpi_networknames` ON (`port`.`id` = `glpi_networknames`.`items_id`)
LEFT JOIN `glpi_ipaddresses` ON (`glpi_ipaddresses`.`items_id` = `glpi_networknames`.`id`)
WHERE (`glpi_ipaddresses`.`name` IS NOT NULL AND `glpi_ipaddresses`.`name` != '') AND `glpi_ipaddresses`.`version` LIKE 4
AND (INET_ATON(`glpi_ipaddresses`.`name`) BETWEEN '123456789' AND '987654321') AND ( `dev`.`entities_id` = '2' ) AND `dev`.`is_deleted` = '0' AND `dev`.`is_template` = '0' GROUP BY `ip`, `port`.`mac` ORDER BY ipnum) UNION (SELECT `port`.`id`,
'NetworkEquipment' AS `itemtype`,
`port`.`items_id`,
`dev`.`name` AS dname,
`port`.`name` AS pname,
`glpi_ipaddresses`.`name` as ip,
`port`.`mac` ,`dev`.`users_id` , INET_ATON(`glpi_ipaddresses`.`name`) AS ipnum FROM `glpi_networkports` port
LEFT JOIN `glpi_networkequipments` dev ON (`port`.`items_id` = `dev`.`id`
AND `port`.`itemtype` = 'NetworkEquipment')
LEFT JOIN `glpi_networknames` ON (`port`.`id` = `glpi_networknames`.`items_id`)
LEFT JOIN `glpi_ipaddresses` ON (`glpi_ipaddresses`.`items_id` = `glpi_networknames`.`id`)
WHERE (`glpi_ipaddresses`.`name` IS NOT NULL AND `glpi_ipaddresses`.`name` != '') AND `glpi_ipaddresses`.`version` LIKE 4
AND (INET_ATON(`glpi_ipaddresses`.`name`) BETWEEN '123456789' AND '987654321') AND ( `dev`.`entities_id` = '2' ) AND `dev`.`is_deleted` = '0' AND `dev`.`is_template` = '0' GROUP BY `ip`, `port`.`mac` ORDER BY ipnum) UNION (SELECT `port`.`id`,
'Peripheral' AS `itemtype`,
`port`.`items_id`,
`dev`.`name` AS dname,
`port`.`name` AS pname,
`glpi_ipaddresses`.`name` as ip,
`port`.`mac` ,`dev`.`users_id` , INET_ATON(`glpi_ipaddresses`.`name`) AS ipnum FROM `glpi_networkports` port
LEFT JOIN `glpi_peripherals` dev ON (`port`.`items_id` = `dev`.`id`
AND `port`.`itemtype` = 'Peripheral')
LEFT JOIN `glpi_networknames` ON (`port`.`id` = `glpi_networknames`.`items_id`)
LEFT JOIN `glpi_ipaddresses` ON (`glpi_ipaddresses`.`items_id` = `glpi_networknames`.`id`)
WHERE (`glpi_ipaddresses`.`name` IS NOT NULL AND `glpi_ipaddresses`.`name` != '') AND `glpi_ipaddresses`.`version` LIKE 4
AND (INET_ATON(`glpi_ipaddresses`.`name`) BETWEEN '123456789' AND '987654321') AND ( `dev`.`entities_id` = '2' ) AND `dev`.`is_deleted` = '0' AND `dev`.`is_template` = '0' GROUP BY `ip`, `port`.`mac` ORDER BY ipnum) UNION (SELECT `port`.`id`,
'Phone' AS `itemtype`,
`port`.`items_id`,
`dev`.`name` AS dname,
`port`.`name` AS pname,
`glpi_ipaddresses`.`name` as ip,
`port`.`mac` ,`dev`.`users_id` , INET_ATON(`glpi_ipaddresses`.`name`) AS ipnum FROM `glpi_networkports` port
LEFT JOIN `glpi_phones` dev ON (`port`.`items_id` = `dev`.`id`
AND `port`.`itemtype` = 'Phone')
LEFT JOIN `glpi_networknames` ON (`port`.`id` = `glpi_networknames`.`items_id`)
LEFT JOIN `glpi_ipaddresses` ON (`glpi_ipaddresses`.`items_id` = `glpi_networknames`.`id`)
WHERE (`glpi_ipaddresses`.`name` IS NOT NULL AND `glpi_ipaddresses`.`name` != '') AND `glpi_ipaddresses`.`version` LIKE 4
AND (INET_ATON(`glpi_ipaddresses`.`name`) BETWEEN '123456789' AND '987654321') AND ( `dev`.`entities_id` = '2' ) AND `dev`.`is_deleted` = '0' AND `dev`.`is_template` = '0' GROUP BY `ip`, `port`.`mac` ORDER BY ipnum) UNION (SELECT `port`.`id`,
'Printer' AS `itemtype`,
`port`.`items_id`,
`dev`.`name` AS dname,
`port`.`name` AS pname,
`glpi_ipaddresses`.`name` as ip,
`port`.`mac` ,`dev`.`users_id` , INET_ATON(`glpi_ipaddresses`.`name`) AS ipnum FROM `glpi_networkports` port
LEFT JOIN `glpi_printers` dev ON (`port`.`items_id` = `dev`.`id`
AND `port`.`itemtype` = 'Printer')
LEFT JOIN `glpi_networknames` ON (`port`.`id` = `glpi_networknames`.`items_id`)
LEFT JOIN `glpi_ipaddresses` ON (`glpi_ipaddresses`.`items_id` = `glpi_networknames`.`id`)
WHERE (`glpi_ipaddresses`.`name` IS NOT NULL AND `glpi_ipaddresses`.`name` != '') AND `glpi_ipaddresses`.`version` LIKE 4
AND (INET_ATON(`glpi_ipaddresses`.`name`) BETWEEN '123456789' AND '987654321') AND ( `dev`.`entities_id` = '2' ) AND `dev`.`is_deleted` = '0' AND `dev`.`is_template` = '0' GROUP BY `ip`, `port`.`mac` ORDER BY ipnum) UNION (SELECT `port`.`id`,
'Enclosure' AS `itemtype`,
`port`.`items_id`,
`dev`.`name` AS dname,
`port`.`name` AS pname,
`glpi_ipaddresses`.`name` as ip,
`port`.`mac` ,0 AS `users_id` , INET_ATON(`glpi_ipaddresses`.`name`) AS ipnum FROM `glpi_networkports` port
LEFT JOIN `glpi_enclosures` dev ON (`port`.`items_id` = `dev`.`id`
AND `port`.`itemtype` = 'Enclosure')
LEFT JOIN `glpi_networknames` ON (`port`.`id` = `glpi_networknames`.`items_id`)
LEFT JOIN `glpi_ipaddresses` ON (`glpi_ipaddresses`.`items_id` = `glpi_networknames`.`id`)
WHERE (`glpi_ipaddresses`.`name` IS NOT NULL AND `glpi_ipaddresses`.`name` != '') AND `glpi_ipaddresses`.`version` LIKE 4
AND (INET_ATON(`glpi_ipaddresses`.`name`) BETWEEN '123456789' AND '987654321') AND ( `dev`.`entities_id` = '2' ) AND `dev`.`is_deleted` = '0' AND `dev`.`is_template` = '0' GROUP BY `ip`, `port`.`mac` ORDER BY ipnum) UNION (SELECT `port`.`id`,
'PDU' AS `itemtype`,
`port`.`items_id`,
`dev`.`name` AS dname,
`port`.`name` AS pname,
`glpi_ipaddresses`.`name` as ip,
`port`.`mac` ,0 AS `users_id` , INET_ATON(`glpi_ipaddresses`.`name`) AS ipnum FROM `glpi_networkports` port
LEFT JOIN `glpi_pdus` dev ON (`port`.`items_id` = `dev`.`id`
AND `port`.`itemtype` = 'PDU')
LEFT JOIN `glpi_networknames` ON (`port`.`id` = `glpi_networknames`.`items_id`)
LEFT JOIN `glpi_ipaddresses` ON (`glpi_ipaddresses`.`items_id` = `glpi_networknames`.`id`)
WHERE (`glpi_ipaddresses`.`name` IS NOT NULL AND `glpi_ipaddresses`.`name` != '') AND `glpi_ipaddresses`.`version` LIKE 4
AND (INET_ATON(`glpi_ipaddresses`.`name`) BETWEEN '123456789' AND '987654321') AND ( `dev`.`entities_id` = '2' ) AND `dev`.`is_deleted` = '0' AND `dev`.`is_template` = '0' GROUP BY `ip`, `port`.`mac` ORDER BY ipnum) UNION (SELECT `port`.`id`,
'Cluster' AS `itemtype`,
`port`.`items_id`,
`dev`.`name` AS dname,
`port`.`name` AS pname,
`glpi_ipaddresses`.`name` as ip,
`port`.`mac` ,0 AS `users_id` , INET_ATON(`glpi_ipaddresses`.`name`) AS ipnum FROM `glpi_networkports` port
LEFT JOIN `glpi_clusters` dev ON (`port`.`items_id` = `dev`.`id`
AND `port`.`itemtype` = 'Cluster')
LEFT JOIN `glpi_networknames` ON (`port`.`id` = `glpi_networknames`.`items_id`)
LEFT JOIN `glpi_ipaddresses` ON (`glpi_ipaddresses`.`items_id` = `glpi_networknames`.`id`)
WHERE (`glpi_ipaddresses`.`name` IS NOT NULL AND `glpi_ipaddresses`.`name` != '') AND `glpi_ipaddresses`.`version` LIKE 4
AND (INET_ATON(`glpi_ipaddresses`.`name`) BETWEEN '123456789' AND '987654321') AND ( `dev`.`entities_id` = '2' ) AND `dev`.`is_deleted` = '0' GROUP BY `ip`, `port`.`mac` ORDER BY ipnum)
If you run the parts of each UNION ALL separately seems to work faster.
Thank you very much.
- Dominant language
- PHP
- Stars
- 43
- Forks
- 23
- Avg merge
- 1h 48m
- Merged PRs (30d)
- 3
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from pluginsGLPI/addressing
-
Improvements Open
Difficulty 5/5 Over a week Newbie friendliness 25/100
pluginsGLPI/addressing#105 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 42/100
pluginsGLPI/addressing#82 · 1 comment ·
-
Difficulty 5/5 Over a week Newbie friendliness 20/100
pluginsGLPI/addressing#53 ·
-
Difficulty 5/5 Over a week Newbie friendliness 20/100
pluginsGLPI/addressing#51 ·
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
pluginsGLPI/addressing#15 · 1 comment ·
All issues in pluginsGLPI/addressing
Similar issues
-
priority: p3
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
googleapis/librarian#7636 ·
-
0. Needs triage bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
nextcloud/fulltextsearch#1011 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
phpstan/phpstan-doctrine#794 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Automattic/static-site-importer#1767 ·