MySQL 5.7 Reference Manual Including MySQL NDB Cluster 7.5 and NDB Cluster 7.6
To coalesce fragmented rows and eliminate wasted space that results from deleting or updating rows, run myisamchk in recovery mode:
$> myisamchk -r tbl_name
        You can optimize a table in the same way by using the
        OPTIMIZE TABLE SQL statement.
        OPTIMIZE TABLE does a table
        repair and a key analysis, and also sorts the index tree so that
        key lookups are faster. There is also no possibility of unwanted
        interaction between a utility and the server, because the server
        does all the work when you use OPTIMIZE
        TABLE. See Section 13.7.2.4, “OPTIMIZE TABLE Statement”.
      
myisamchk has a number of other options that you can use to improve the performance of a table:
            --analyze or
            -a: Perform key distribution analysis. This
            improves join performance by enabling the join optimizer to
            better choose the order in which to join the tables and
            which indexes it should use.
          
            --sort-index or
            -S: Sort the index blocks. This optimizes
            seeks and makes table scans that use indexes faster.
          
            --sort-records=
            or index_num-R :
            Sort data rows according to a given index. This makes your
            data much more localized and may speed up range-based
            index_numSELECT and ORDER
            BY operations that use this index.
          
For a full description of all available options, see Section 4.6.3, “myisamchk — MyISAM Table-Maintenance Utility”.