Regression: Cardinality is chosen in opposite direction than in FB2.5 ---------------------------------------------------------------------
Key: CORE-5025 URL: http://tracker.firebirdsql.org/browse/CORE-5025 Project: Firebird Core Issue Type: Bug Components: Engine Affects Versions: 3.0 RC 1 Reporter: Karol Bieniaszewski CREATE TABLE TEST1 ( ID INTEGER NOT NULL CONSTRAINT PK_TEST1 PRIMARY KEY ); CREATE TABLE TEST2 ( ID INTEGER NOT NULL CONSTRAINT PK_TEST2 PRIMARY KEY, ID_1 INTEGER NOT NULL ); commit; SET TERM ^ ; CREATE PROCEDURE FILL_TEST1(FROM_I INTEGER, TO_I INTEGER) AS DECLARE VARIABLE VAR_I INTEGER; BEGIN VAR_I = :FROM_I; WHILE (VAR_I<=TO_I) DO BEGIN INSERT INTO TEST1(ID) VALUES(:VAR_I); VAR_I = VAR_I + 1; END END^ SET TERM ; ^ SET TERM ^ ; CREATE PROCEDURE FILL_TEST2(FROM_I INTEGER, TO_I INTEGER, FROM_I1 INTEGER, TO_I1 INTEGER) AS DECLARE VARIABLE VAR_I INTEGER; DECLARE VARIABLE VAR_J INTEGER; DECLARE VARIABLE VAR_ILE INTEGER; DECLARE VARIABLE VAR_LOS INTEGER; DECLARE VARIABLE VAR_ID INTEGER; BEGIN VAR_I = :FROM_I; VAR_ID = 1; WHILE (VAR_I<=TO_I) DO BEGIN VAR_ILE = TRUNC(RAND()*30); VAR_J = 1; WHILE (VAR_J<=VAR_ILE) DO BEGIN VAR_LOS = TRUNC((RAND()*(TO_I1-FROM_I1))+FROM_I1); INSERT INTO TEST2(ID, ID_1) VALUES(:VAR_ID, :VAR_LOS); VAR_J = VAR_J + 1; VAR_ID = VAR_ID + 1; END VAR_I = VAR_I + 1; END END^ SET TERM ; ^ commit; ALTER TABLE TEST2 ADD CONSTRAINT FK_TEST2__TEST1 FOREIGN KEY(ID_1) REFERENCES TEST1(ID) ON DELETE CASCADE ON UPDATE CASCADE; commit; execute procedure FILL_TEST1(1, 1000); commit; execute procedure FILL_TEST2(1, 10000, 1, 1000); commit; /* SET STATISTICS keys PK_TEST1, PK_TEST2, FK_TEST2__TEST1... */ SET STATISTICS INDEX PK_TEST1; SET STATISTICS INDEX FK_TEST2__TEST1; SET STATISTICS INDEX PK_TEST2; commit; SELECT * FROM TEST1 T1 INNER JOIN TEST2 T2 ON T2.ID_1=T1.ID PLAN JOIN (T1 NATURAL, T2 INDEX (FK_TEST2__TEST1)) faster is travelsal throught bigger set and access lower set by index then in opposite direction (natural scan lower set and access bigger set by index) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://tracker.firebirdsql.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira ------------------------------------------------------------------------------ Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel