diff options
author | unknown <monty@donna.mysql.fi> | 2001-03-15 13:36:14 +0200 |
---|---|---|
committer | unknown <monty@donna.mysql.fi> | 2001-03-15 13:36:14 +0200 |
commit | d71bb8b2d458c080361b2036933b6199826f0834 (patch) | |
tree | af4f51ee4607baa6b437039b6b6fe5a81dc80692 /myisam/mi_check.c | |
parent | c669254da76877d1ca9fc78c1065604a797935ef (diff) | |
download | mariadb-git-d71bb8b2d458c080361b2036933b6199826f0834.tar.gz |
Improved ANALYZE TABLE a bit for small tables.
Docs/manual.texi:
Updated changelog
Diffstat (limited to 'myisam/mi_check.c')
-rw-r--r-- | myisam/mi_check.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/myisam/mi_check.c b/myisam/mi_check.c index c0183496df9..699f0f5ad68 100644 --- a/myisam/mi_check.c +++ b/myisam/mi_check.c @@ -580,9 +580,7 @@ static int chk_index(MI_CHECK *param, MI_INFO *info, MI_KEYDEF *keyinfo, } if (param->testflag & T_STATISTICS) { - if (*keys == 1L) /* first_key */ - param->unique_count[keyinfo->keysegs]++; - else + if (*keys != 1L) /* not first_key */ { uint diff; _mi_key_cmp(keyinfo->seg,info->lastkey,key,USE_WHOLE_KEY,SEARCH_FIND, @@ -2520,10 +2518,11 @@ static int sort_key_write(SORT_INFO *sort_info, const void *a) { cmp=_mi_key_cmp(sort_info->keyseg,sort_info->key_block->lastkey,(uchar*) a, USE_WHOLE_KEY,SEARCH_FIND | SEARCH_UPDATE ,&diff_pos); + sort_info->unique[diff_pos-1]++; } else { - cmp= -1; diff_pos=sort_info->keyinfo->keysegs; + cmp= -1; } if ((sort_info->keyinfo->flag & HA_NOSAME) && cmp == 0) { @@ -2544,7 +2543,6 @@ static int sort_key_write(SORT_INFO *sort_info, const void *a) _mi_print_key(stdout,sort_info->keyseg,(uchar*) a, USE_WHOLE_KEY); return (sort_delete_record(param)); } - sort_info->unique[diff_pos-1]++; #ifndef DBUG_OFF if (cmp > 0) { @@ -3099,7 +3097,7 @@ static void update_key_parts(MI_KEYDEF *keyinfo, if (count == 0) tmp=records; else - tmp= (records+count/2) / count; + tmp= (records + (count+1)/2) / (count+1); if (tmp >= (ulonglong) ~(ulong) 0) tmp=(ulonglong) ~(ulong) 0; *rec_per_key_part=(ulong) tmp; |