• Oleg Smirnov's avatar
    MDEV-20609 Full table scan in INFORMATION_SCHEMA.PARAMETERS/ROUTINES · beb9a545
    Oleg Smirnov authored
    Queries to INFORMATION_SCHEMA.PARAMETERS and ROUTINES tables are always
    performed using full index scan of the mysql.proc primary key
    on fields (`db`,`name`,`type`). This can be done in a much more effective
    way if `db` and `name` field values can be derived from the WHERE statement,
    like here:
      SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
        WHERE SPECIFIC_SCHEMA = 'test' AND SPECIFIC_NAME = 'my_func'
    or here:
      SELECT * FROM information_schema.ROUTINES
        WHERE ROUTINE_SCHEMA='test' AND ROUTINE_NAME='my_func'.
    
    In such cases index range scan may be employed instead of full index
    scan. This commit makes the server retrieve lookup field values from
    the SQL statement and perform index range scan instead of full index
    scan if possible.
    beb9a545
information_schema_routines.test 13.2 KB