mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Added thread variable max_seeks_for_key
Change optimizer to prefer key lookups before table scan Change table scans to be done after tables with constrains on scanned table mysql-test/r/distinct.result: Update results mysql-test/r/group_by.result: Update results mysql-test/r/heap.result: Update results mysql-test/r/join.result: Update results mysql-test/r/key_diff.result: Update results mysql-test/r/myisam.result: Update results mysql-test/r/order_by.result: Update results mysql-test/r/select_safe.result: Update results mysql-test/t/distinct.test: Change test to be repeatable mysql-test/t/join.test: Change test to be repeatable mysql-test/t/select_safe.test: Add tests for MAX_SEEKS_FOR_KEY sql/handler.h: Optimize structure for 64 bit machines (and to avoid problems with gdb) sql/item_cmpfunc.cc: Initialize not_null_tables_cache properly sql/mysqld.cc: Added max_seeks_for_key sql/set_var.cc: Added max_seeks_for_key sql/sql_class.h: Added max_seeks_for_key sql/sql_select.cc: Added max_seeks_for_key Change optimizer to prefer key lookups before table scan. Change table scans to be done after tables with constrains on scanned table
This commit is contained in:
@ -4,7 +4,7 @@
|
||||
|
||||
drop table if exists t1;
|
||||
SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=4, SQL_MAX_JOIN_SIZE=9;
|
||||
create table t1 (a int auto_increment primary key, b char(20));
|
||||
create table t1 (a int auto_increment primary key, b char(20), key(b));
|
||||
insert into t1 values(1,"test");
|
||||
SELECT SQL_BUFFER_RESULT * from t1;
|
||||
update t1 set b="a" where a=1;
|
||||
@ -12,7 +12,7 @@ delete from t1 where a=1;
|
||||
insert into t1 values(1,"test"),(2,"test2");
|
||||
SELECT SQL_BUFFER_RESULT * from t1;
|
||||
update t1 set b="a" where a=1;
|
||||
select 1 from t1,t1 as t2,t1 as t3,t1 as t4;
|
||||
select 1 from t1,t1 as t2,t1 as t3;
|
||||
|
||||
# The following should give errors:
|
||||
--error 1175
|
||||
@ -49,6 +49,17 @@ SELECT * from t1;
|
||||
SET MAX_JOIN_SIZE=DEFAULT;
|
||||
SELECT * from t1;
|
||||
|
||||
#
|
||||
# Test MAX_SEEKS_FOR_KEY
|
||||
#
|
||||
SELECT @@MAX_SEEKS_FOR_KEY;
|
||||
analyze table t1;
|
||||
insert into t1 values (null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a");
|
||||
explain select * from t1,t1 as t2 where t1.b=t2.b;
|
||||
set MAX_SEEKS_FOR_KEY=1;
|
||||
explain select * from t1,t1 as t2 where t1.b=t2.b;
|
||||
SET MAX_SEEKS_FOR_KEY=DEFAULT;
|
||||
|
||||
drop table t1;
|
||||
|
||||
SET SQL_SAFE_UPDATES=0,SQL_SELECT_LIMIT=DEFAULT, SQL_MAX_JOIN_SIZE=DEFAULT;
|
||||
|
Reference in New Issue
Block a user