code: func (info *tableHintInfo) matchTableName(tables []*model.CIStr, hintTables []hintTableInfo) bool {
  	hintMatched := false
  	for _, tableName := range tables {
  		if tableName == nil {
  			continue
  		}
  		for i, curEntry := range hintTables {
  			if curEntry.name.L == tableName.L {
  				hintTables[i].matched = true
  				hintMatched = true
  				break
  			}
  		}
  	}
  	return hintMatched
  }
docs: // matchTableName checks whether the hint hit the need.
  // Only need either side matches one on the list.
  // Even though you can put 2 tables on the list,
  // it doesn't mean optimizer will reorder to make them
  // join directly.
  // Which it joins on with depend on sequence of traverse
  // and without reorder, user might adjust themselves.
  // This is similar to MySQL hints.