На работе мы делаем что-то вроде этого от кода ASP позади:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Const jQuery As String = "jQuery"
With Me.Page.ClientScript
If Not .IsClientScriptIncludeRegistered(jQuery) Then
.RegisterClientScriptInclude(jQuery, VirtualPathUtility.ToAbsolute("~/Includes/jQuery-1.2.6.js"))
End If
End With
End Sub
я не знаю, возможно ли сделать это с ASP.NET MVC.
Это немного лучше, чем было в 2006 году. Вы можете задать SHOW SESSION STATUS до и после, а затем посмотреть на каждое из счетчиков Handler_read_ *, чтобы уметь определять количество проверенных строк.
На самом деле другого пути нет .. Хотя в протоколе сервера есть флаг, указывающий, произошло ли сканирование таблицы, он не раскрывает rows_examined. Даже такие инструменты, как MySQL Query Analyzer, должны работать, выполняя SHOW SESSION STATUS до / после (хотя я думаю, что он запускает SHOW SESSION STATUS только после , поскольку он запоминает предыдущие значения).
Я знаю, что это не связано с вашим исходным вопросом, но помимо rows_examined есть и другие дорогостоящие компоненты запросов. Если вы решите сделать это через медленный журнал, вам следует проверить этот патч:
http://www.percona.com/docs/wiki/patches:microslow_innodb#changes_to_the_log_format
Я могу порекомендовать поискать "Disk_tmp_table : Да »и« Disk_filesort: Да ».
Handler_read_rnd
Количество запросов на чтение строки на основе фиксированной позиции. Это значение будет высоким, если вы выполняете много запросов, требующих сортировки результатов. Вероятно, у вас есть много запросов, которые требуют, чтобы MySQL сканировал целые таблицы, или у вас есть объединения, которые не используют должным образом ключи.
Handler_read_rnd_next
Количество запросов на чтение следующей строки в файле данных. Это значение будет высоким, если вы выполняете много сканирований таблиц. Обычно это говорит о том, что ваши таблицы не проиндексированы должным образом или что ваши запросы не написаны для использования имеющихся у вас индексов.
read_rnd *
означает чтение фактических строк таблицы с полным сканированием.
Обратите внимание, что это будет ничего не показывать, если есть сканирование индекса в сочетании с поиском строки, оно все равно считается чтением ключа.
Добавьте к запросу EXPLAIN в начале. В MySQL это покажет путь выполнения запроса, какие таблицы были проверены, а также количество проверенных строк для каждой таблицы.
Вот документация .