GET https://login.ebibliotheken-hessen.de/dashboard/start

Query Metrics

41 Database Queries
41 Different statements
55.95 ms Query time
0 Invalid entities
1 Managed entities

Grouped Statements

Show all queries

Time Count Info
15.16 ms
(27.10%)
1
SELECT 
                            b.id as library_id,
                            b.name as library_name,
                            b.city as city,
                            COUNT(DISTINCT CASE WHEN la.action_type = "library_login" THEN la.id END) as total_logins,
                            COUNT(DISTINCT CASE WHEN la.action_type = "library_login" AND la.success = 1 THEN la.id END) as successful_logins,
                            COUNT(DISTINCT CASE WHEN la.action_type = "license_granted" THEN la.id END) as licenses_granted,
                            COUNT(DISTINCT CASE WHEN la.action_type = "login" THEN la.id END) as license_logins,
                            COUNT(DISTINCT CASE WHEN DATE(la.attempt_at) = CURDATE() THEN la.id END) as activity_today,
                            COUNT(DISTINCT CASE WHEN DATE(la.attempt_at) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) THEN la.id END) as activity_week,
                            COUNT(DISTINCT CASE WHEN DATE(la.attempt_at) >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) THEN la.id END) as activity_month,
                            COUNT(DISTINCT lpa.pool_id) as assigned_pools,
                            MAX(la.attempt_at) as last_activity
                        FROM libraries b
                        LEFT JOIN login_attempts la ON b.id = la.library_id
                        LEFT JOIN license_pool_allocations lpa ON b.id = lpa.library_id AND lpa.allocation_value > 0
                        WHERE b.active = 1 AND (1=1)
                        GROUP BY b.id, b.name, b.city
                        ORDER BY activity_month DESC, b.name
Parameters:
[]
8.50 ms
(15.19%)
1
SELECT b.*, 
                       (SELECT COUNT(DISTINCT pool_id) FROM license_pool_allocations 
                        WHERE library_id = b.id AND allocation_value > 0) as assigned_pools,
                       (SELECT COUNT(DISTINCT id) FROM license_grants 
                        WHERE library_id = b.id) as total_licenses_used
                FROM libraries b
                WHERE b.active = 1
                ORDER BY b.city, b.name
Parameters:
[]
3.85 ms
(6.88%)
1
SELECT
                        lpa.pool_id,
                        lpa.library_id,
                        lpa.allocation_value,
                        lpa.allocation_type,
                        l.name as library_name
                    FROM license_pool_allocations lpa
                    JOIN libraries l ON lpa.library_id = l.id
                    WHERE lpa.allocation_value > 0
                    ORDER BY lpa.pool_id
Parameters:
[]
2.72 ms
(4.87%)
1
SELECT t0.id AS id_1, t0.email AS email_2, t0.roles AS roles_3, t0.password AS password_4, t0.library_id AS library_id_5, t0.name AS name_6, t0.active AS active_7, t0.last_login AS last_login_8, t0.created_at AS created_at_9 FROM user t0 WHERE t0.id = ?
Parameters:
[
  1
]
1.89 ms
(3.38%)
1
SELECT 
                            lp.id as pool_id,
                            lp.name as pool_name,
                            lp.license_model,
                            lp.total_licenses,
                            lp.valid_from,
                            lp.valid_until,
                            o.name as offer_name,
                            (SELECT COUNT(DISTINCT id) FROM login_attempts 
                             WHERE pool_id = lp.id AND action_type = "license_granted") as licenses_granted,
                            (SELECT COUNT(DISTINCT id) FROM login_attempts 
                             WHERE pool_id = lp.id AND action_type = "login") as license_logins,
                            (SELECT COUNT(DISTINCT id) FROM login_attempts 
                             WHERE pool_id = lp.id AND DATE(attempt_at) = CURDATE()) as activity_today,
                            (SELECT COUNT(DISTINCT id) FROM login_attempts 
                             WHERE pool_id = lp.id AND DATE(attempt_at) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)) as activity_week,
                            (SELECT COUNT(DISTINCT id) FROM login_attempts 
                             WHERE pool_id = lp.id AND DATE(attempt_at) >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)) as activity_month,
                            (SELECT COUNT(DISTINCT library_id) FROM license_pool_allocations 
                             WHERE pool_id = lp.id AND allocation_value > 0) as assigned_libraries,
                            (SELECT MAX(attempt_at) FROM login_attempts WHERE pool_id = lp.id) as last_activity
                        FROM license_pools lp
                        JOIN offers o ON lp.offer_id = o.id
                        WHERE lp.active = 1 AND (1=1)
                        ORDER BY activity_month DESC, lp.name
Parameters:
[]
1.69 ms
(3.02%)
1
SELECT o.*, 
                       (SELECT COUNT(DISTINCT id) FROM license_pools WHERE offer_id = o.id) as total_pools,
                       (SELECT COUNT(DISTINCT id) FROM license_pools 
                        WHERE offer_id = o.id AND active = 1 
                          AND valid_from <= CURDATE() AND valid_until >= CURDATE()) as active_pools,
                       (SELECT COUNT(DISTINCT lg.id) FROM license_grants lg
                        JOIN license_pools lp ON lg.pool_id = lp.id
                        WHERE lp.offer_id = o.id) as total_licenses_granted
                FROM offers o
                WHERE o.active = 1
                ORDER BY o.name
Parameters:
[]
1.58 ms
(2.83%)
1
SELECT lp.*, 
                       o.name as offer_name, 
                       o.active as offer_active,
                       (SELECT COUNT(DISTINCT id) FROM license_grants 
                        WHERE pool_id = lp.id AND DATE(granted_at) = ? AND action_type = "license_granted") as total_used_today,
                       (SELECT COUNT(DISTINCT id) FROM license_grants 
                        WHERE pool_id = lp.id AND DATE_FORMAT(granted_at, "%Y-%m") = ? AND action_type = "license_granted") as total_used_month,
                       (SELECT COUNT(DISTINCT library_id) FROM license_pool_allocations 
                        WHERE pool_id = lp.id AND allocation_value > 0) as total_allocated_libraries,
                       (lp.valid_from <= ? AND lp.valid_until >= ?) as is_currently_active
                FROM license_pools lp
                JOIN offers o ON lp.offer_id = o.id
                WHERE lp.active = 1
                ORDER BY lp.priority DESC, lp.name ASC
Parameters:
[
  "2025-12-08"
  "2025-12"
  "2025-12-08"
  "2025-12-08"
]
1.52 ms
(2.72%)
1
SELECT
                            date,
                            SUM(library_logins) as library_logins,
                            SUM(licenses_granted) as licenses_granted,
                            SUM(license_logins) as license_logins,
                            SUM(failed_attempts) as failed_attempts,
                            SUM(total_activity) as total_activity
                        FROM (
                            -- Daten aus login_attempts (Bib-Logins, Lizenzvergaben, Fehler)
                            SELECT
                                DATE(attempt_at) as date,
                                COUNT(CASE WHEN action_type = "library_login" AND success = 1 THEN 1 END) as library_logins,
                                COUNT(CASE WHEN action_type = "license_granted" THEN 1 END) as licenses_granted,
                                0 as license_logins,
                                COUNT(CASE WHEN success = 0 THEN 1 END) as failed_attempts,
                                COUNT(*) as total_activity
                            FROM login_attempts
                            WHERE attempt_at >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
                            GROUP BY DATE(attempt_at)

                            UNION ALL

                            -- Daten aus license_grants (Lizenz-Logins = wiederholte Logins)
                            SELECT
                                DATE(granted_at) as date,
                                0 as library_logins,
                                0 as licenses_granted,
                                COUNT(CASE WHEN action_type = "license_login" THEN 1 END) as license_logins,
                                0 as failed_attempts,
                                COUNT(*) as total_activity
                            FROM license_grants
                            WHERE granted_at >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
                            GROUP BY DATE(granted_at)
                        ) combined
                        GROUP BY date
                        ORDER BY date ASC
Parameters:
[]
1.23 ms
(2.20%)
1
SELECT COUNT(*) FROM libraries WHERE active = 1
Parameters:
[]
1.22 ms
(2.18%)
1
SELECT 
                            lp.name as pool_name,
                            o.name as offer_name,
                            COUNT(*) as total_activity,
                            COUNT(CASE WHEN la.action_type = "license_granted" THEN 1 END) as licenses_granted
                        FROM login_attempts la
                        JOIN license_pools lp ON la.pool_id = lp.id
                        JOIN offers o ON lp.offer_id = o.id
                        WHERE la.attempt_at >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND (1=1)
                        GROUP BY lp.id, lp.name, o.name
                        ORDER BY total_activity DESC
                        LIMIT 10
Parameters:
[]
1.18 ms
(2.11%)
1
SELECT la.*, 
                               b.name as library_name,
                               o.name as offer_name,
                               lp.name as pool_name,
                               la.attempt_at, la.success, la.action_type, la.license_code,
                               la.error_message, la.ip_address, la.user_agent
                        FROM login_attempts la
                        JOIN libraries b ON la.library_id = b.id
                        LEFT JOIN offers o ON la.offer_id = o.id
                        LEFT JOIN license_pools lp ON la.pool_id = lp.id
                        WHERE la.attempt_at >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
                        ORDER BY la.attempt_at DESC
                        LIMIT 1000
Parameters:
[]
1.18 ms
(2.10%)
1
SELECT 
                            b.name as library_name,
                            COUNT(*) as total_activity,
                            COUNT(CASE WHEN la.action_type = "license_granted" THEN 1 END) as licenses_granted
                        FROM login_attempts la
                        JOIN libraries b ON la.library_id = b.id
                        WHERE la.attempt_at >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND (1=1)
                        GROUP BY b.id, b.name
                        ORDER BY total_activity DESC
                        LIMIT 10
Parameters:
[]
1.06 ms
(1.90%)
1
SELECT
                            month,
                            SUM(library_logins) as library_logins,
                            SUM(licenses_granted) as licenses_granted,
                            SUM(license_logins) as license_logins,
                            SUM(total_activity) as total_activity
                        FROM (
                            -- Daten aus login_attempts
                            SELECT
                                DATE_FORMAT(attempt_at, "%Y-%m") as month,
                                COUNT(CASE WHEN action_type = "library_login" AND success = 1 THEN 1 END) as library_logins,
                                COUNT(CASE WHEN action_type = "license_granted" THEN 1 END) as licenses_granted,
                                0 as license_logins,
                                COUNT(*) as total_activity
                            FROM login_attempts
                            WHERE attempt_at >= DATE_SUB(CURDATE(), INTERVAL 12 MONTH)
                            GROUP BY DATE_FORMAT(attempt_at, "%Y-%m")

                            UNION ALL

                            -- Daten aus license_grants (Lizenz-Logins)
                            SELECT
                                DATE_FORMAT(granted_at, "%Y-%m") as month,
                                0 as library_logins,
                                0 as licenses_granted,
                                COUNT(CASE WHEN action_type = "license_login" THEN 1 END) as license_logins,
                                COUNT(*) as total_activity
                            FROM license_grants
                            WHERE granted_at >= DATE_SUB(CURDATE(), INTERVAL 12 MONTH)
                            GROUP BY DATE_FORMAT(granted_at, "%Y-%m")
                        ) combined
                        GROUP BY month
                        ORDER BY month ASC
Parameters:
[]
1.02 ms
(1.82%)
1
SELECT pool_id, COUNT(DISTINCT license_code) as today_granted
                FROM login_attempts
                WHERE action_type = "license_granted" AND success = 1 
                  AND DATE(attempt_at) = CURDATE()
                GROUP BY pool_id
Parameters:
[]
0.99 ms
(1.77%)
1
SELECT
                    lp.id as pool_id,
                    lp.name as pool_name,
                    lp.distribution_mode,
                    lp.valid_from,
                    lp.valid_until,
                    o.name as offer_name,
                    o.auth_method,
                    lp.license_model,
                    lp.total_licenses,
                    lp.licenses_per_day,
                    lp.licenses_per_month,
                    lp.licenses_per_year,
                    lp.license_factor
                FROM license_pools lp
                JOIN offers o ON lp.offer_id = o.id
                WHERE lp.active = 1
                ORDER BY lp.name
Parameters:
[]
0.88 ms
(1.57%)
1
SELECT TABLE_NAME
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = ?
  AND TABLE_TYPE = 'BASE TABLE'
ORDER BY TABLE_NAME
Parameters:
[
  "lizenzmanager2025"
]
0.71 ms
(1.27%)
1
SELECT 
                    license_model,
                    COUNT(*) as pool_count,
                    COUNT(CASE WHEN valid_from <= CURDATE() AND valid_until >= CURDATE() THEN 1 END) as active_count,
                    SUM(CASE WHEN license_model = "absolut" THEN total_licenses ELSE 0 END) as total_absolute_licenses
                FROM license_pools 
                WHERE active = 1
                GROUP BY license_model
Parameters:
[]
0.60 ms
(1.07%)
1
SELECT pool_id, COUNT(DISTINCT license_code) as total_granted
                FROM login_attempts
                WHERE action_type = "license_granted" AND success = 1
                GROUP BY pool_id
Parameters:
[]
0.57 ms
(1.02%)
1
SELECT pool_id, library_id, COUNT(*) as used_today
                FROM login_attempts
                WHERE action_type = "license_granted" AND success = 1 AND DATE(attempt_at) = CURDATE()
                GROUP BY pool_id, library_id
Parameters:
[]
0.57 ms
(1.02%)
1
SELECT 
                    la.attempt_at as granted_at,
                    lp.name as pool_name,
                    l.name as library_name,
                    o.name as offer_name,
                    o.image_url as offer_image,
                    la.license_code,
                    la.ip_address
                FROM login_attempts la
                JOIN libraries l ON la.library_id = l.id
                LEFT JOIN license_pools lp ON la.pool_id = lp.id
                LEFT JOIN offers o ON la.offer_id = o.id
                WHERE la.action_type = "license_granted" AND la.success = 1 
                ORDER BY la.attempt_at DESC
                LIMIT 10
Parameters:
[]
0.56 ms
(1.01%)
1
SELECT pool_id, library_id, COUNT(DISTINCT license_code) as total_granted
                FROM login_attempts
                WHERE action_type = "license_granted" AND success = 1
                GROUP BY pool_id, library_id
Parameters:
[]
0.55 ms
(0.98%)
1
SELECT pool_id, COUNT(DISTINCT license_code) as valid_licenses
                FROM login_attempts
                WHERE action_type = "license_granted" AND success = 1
                  AND attempt_at >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
                GROUP BY pool_id
Parameters:
[]
0.53 ms
(0.95%)
1
SELECT COUNT(*) FROM license_grants
                WHERE DATE_FORMAT(granted_at, "%Y-%m") = ? AND action_type = "license_granted"
Parameters:
[
  "2025-12"
]
0.51 ms
(0.92%)
1
SELECT COUNT(*) FROM license_grants
                WHERE DATE(granted_at) = ? AND action_type = "license_granted"
Parameters:
[
  "2025-12-08"
]
0.50 ms
(0.90%)
1
SELECT COUNT(*) FROM offers WHERE active = 1
Parameters:
[]
0.49 ms
(0.88%)
1
SELECT COUNT(DISTINCT user_identifier) FROM login_attempts
                    WHERE action_type = "library_login" AND success = 1 AND DATE(attempt_at) = CURDATE()
Parameters:
[]
0.45 ms
(0.80%)
1
SELECT COUNT(*) FROM license_pools 
                WHERE active = 1 AND valid_from <= CURDATE() AND valid_until >= CURDATE()
Parameters:
[]
0.42 ms
(0.75%)
1
SELECT COUNT(*) FROM license_grants
                WHERE YEAR(granted_at) = ? AND action_type = "license_granted"
Parameters:
[
  "2025"
]
0.39 ms
(0.70%)
1
SELECT COUNT(DISTINCT user_identifier) FROM login_attempts
                    WHERE action_type = "library_login" AND success = 1 AND YEARWEEK(attempt_at, 1) = YEARWEEK(CURDATE(), 1)
Parameters:
[]
0.37 ms
(0.66%)
1
SELECT
                        lr.*,
                        l.name as library_name,
                        o.name as offer_name,
                        lp.name as pool_name
                    FROM license_reminders lr
                    JOIN libraries l ON lr.library_id = l.id
                    JOIN offers o ON lr.offer_id = o.id
                    LEFT JOIN license_pools lp ON lr.pool_id = lp.id
                    
                    ORDER BY lr.created_at DESC
                    LIMIT 10
Parameters:
[]
0.35 ms
(0.63%)
1
SELECT COUNT(*) FROM providers
Parameters:
[]
0.34 ms
(0.61%)
1
SELECT DATABASE()
Parameters:
[]
0.31 ms
(0.56%)
1
SELECT COUNT(DISTINCT user_identifier) FROM login_attempts
                    WHERE action_type = "library_login" AND success = 1 AND YEAR(attempt_at) = YEAR(CURDATE()) AND MONTH(attempt_at) = MONTH(CURDATE())
Parameters:
[]
0.30 ms
(0.55%)
1
SELECT setting_value FROM system_settings WHERE setting_key = ?
Parameters:
[
  "app_name"
]
0.28 ms
(0.49%)
1
SELECT COUNT(*) FROM login_attempts
                    WHERE action_type = "license_granted" AND success = 1
Parameters:
[]
0.27 ms
(0.49%)
1
SELECT COUNT(*) FROM login_attempts
                    WHERE action_type = "license_granted" AND success = 1
                    AND YEAR(attempt_at) = YEAR(CURDATE()) AND MONTH(attempt_at) = MONTH(CURDATE())
Parameters:
[]
0.26 ms
(0.46%)
1
SELECT COUNT(*) FROM login_attempts
                    WHERE action_type = "library_login" AND success = 1 AND DATE(attempt_at) = CURDATE()
Parameters:
[]
0.26 ms
(0.46%)
1
SELECT COUNT(DISTINCT user_identifier) FROM login_attempts
                    WHERE success = 1 AND DATE(attempt_at) = CURDATE()
Parameters:
[]
0.24 ms
(0.42%)
1
SELECT COUNT(*) FROM license_grants
                    WHERE action_type = "license_login" AND DATE(granted_at) = CURDATE()
Parameters:
[]
0.22 ms
(0.39%)
1
SELECT COUNT(*) FROM login_attempts
                    WHERE success = 0 AND DATE(attempt_at) = CURDATE()
Parameters:
[]
0.22 ms
(0.38%)
1
SELECT COUNT(*) FROM license_grants
                    WHERE expires_at > NOW() AND action_type = "license_granted"
Parameters:
[]

Database Connections

Name Service
default doctrine.dbal.default_connection

Entity Managers

Name Service
default doctrine.orm.default_entity_manager

Second Level Cache

Second Level Cache is not enabled.

Managed Entities

default entity manager

Class Amount of managed objects
App\Entity\User 1

Entities Mapping

Class Mapping errors
App\Entity\User No errors.