Ich wollte überprüfen, ob die Abfragen meines Servers Index ordnungsgemäß verwenden. Also habe ich log_queries_not_using_indexes
aktiviert und Testfälle ausgeführt.Verstehen MySQL log_queries_not_using_indexes Verhalten
Ich fand heraus, dass die folgende Abfrage auf mysql.slow_log
Tabelle geschrieben ist.
SELECT * FROM user_rel
WHERE (f = '5837be9dc34f747dbd7ba6c7' AND t = '5837be9dc34f747dbd7ba6ca')
OR (f = '5837be9dc34f747dbd7ba6ca' AND t = '5837be9dc34f747dbd7ba6c7')
LIMIT 2;
Aber meine EXPLAIN EXTENDED
Ergebnis scheint in Ordnung.
# id, select_type, table, type, possible_keys, key, key_len, ref, rows, filtered, Extra
'1', 'SIMPLE', 'user_rel', 'range', 'f-t-UNIQUE,t_uid_idx', 'f-t-UNIQUE', '208', NULL, '2', '100.00', 'Using index condition'
Bitte kann mir jemand erklären, warum diese Abfrage als slow_log
geschrieben?
bearbeiten 1
Hier sind mysql Optionen für langsame Abfragen Protokollierung in Bezug auf.
log_output TABLE
log_queries_not_using_indexes ON
long_query_time 2.000000
min_examined_row_limit 0
slow_query_log ON
sql_log_off OFF
bearbeiten 2
Nachdem ich min_examined_row_limit
-10
aktualisiert, wird die Abfrage mehr aufkreuzen nicht. Aber warum wirkt sich das auf das log_queries_not_using_indexes
Ergebnis aus?
Sie schlagen also vor, nur eine Zeile für das eindeutige 'f',' t'-Paar zu behalten. Ich werde versuchen, wie Sie vorschlagen, Refactoring. Vielen Dank. – redism