Я помогаю поддерживать программу, которая по существу является дружественным интерфейсом только для чтения для большой и сложной базы данных MySQL - программа создает специальные запросы SELECT от входа пользователя, отправляет запросы в БД, получает результаты, послепроцессы их и хорошо отображают их пользователю.
Я хотел бы добавить некоторую форму разумного/эвристического предсказания для ожидаемой производительности построенного запроса - иногда пользователи непреднамеренно делают запросы, которые неизбежно будут длиться очень долго (потому что они вернут огромные наборы результатов или потому что они "идут против зерна" того, как индексируется БД), и я хотел бы показать пользователю некоторую "несколько надежную" информацию/угадать, сколько времени займет запрос. Он не должен быть совершенным, если он не становится настолько плохим и часто из-за суеты с реальностью, что вызывает эффект "вопля волка", когда пользователи учатся его игнорировать;-) Основываясь на этой информации, пользователь может решить пойти на кофе (если оценка составляет 5-10 минут), пойдите на обед (если это 30-60 минут), убейте запрос и попробуйте что-нибудь другое (возможно, более жесткие ограничения на информацию, которую они запрашивают ) и т.д. и т.д.
Я не очень хорошо знаком с оператором MySQL EXPLAIN - я вижу много информации о том, как использовать его для оптимизации запроса или схемы БД, индексирования и т.д., но не так много о том, как использовать его для моего более ограниченная цель - просто сделать прогноз, взяв БД в качестве заданного (конечно, если прогнозы достаточно надежны, я могу в конечном итоге переключиться на их использование и выбирать между альтернативными формами, которые может потребоваться запросу, но, что на будущее: на данный момент, я был бы очень счастлив, просто чтобы показать производительность для пользователей для вышеупомянутых целей).
Любые указатели...?