Open mahjonp opened 4 years ago
./bin/horo -d "root:@tcp(localhost:4000)/imdb?charset=utf8" index add
./bin/horo -r 4 -d "root:@tcp(localhost:4000)/imdb?charset=utf8" bench
+--------+-------------+------------------------+--------------------------+---------------+-------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ID | #PLAN SPACE | DEFAULT EXECUTION TIME | BEST PLAN EXECUTION TIME | EFFECTIVENESS | BETTER OPTIMAL PLANS | ESTROW Q-ERROR | QUERY |
+--------+-------------+------------------------+--------------------------+---------------+-------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 1.sql | 2 | 623.0ms ±25% | 401.8ms ±30% | 50.0% | #1(64.5%) | count:0, median:NaN, 90th:NaN, 95th:NaN, max:NaN | SELECT * FROM (aka_title) JOIN movie_link WHERE ((aka_title.id<=>242091 OR aka_title.id>242091) AND (aka_title.movie_id<=>3865448 OR aka_title.movie_id>3865448) OR (aka_title.title<=>"Golden jade slave" OR aka_title.title<"Golden jade slave") OR (aka_title.kind_id<=>1 OR aka_title.kind_id>1) OR (aka_title.production_year<=>1962 OR aka_title.production_year>1962) OR (aka_title.phonetic_code<=>"G4352" OR aka_title.phonetic_code<"G4352") AND (aka_title.episode_of_id<=>NULL OR aka_title.episode_of_id<NULL) OR (aka_title.md5sum<=>"0422d64139af699bceac3265e154fe04" OR aka_title.md5sum>"0422d64139af699bceac3265e154fe04")) AND ((movie_link.id<=>1996389 OR movie_link.id>1996389) AND (movie_link.movie_id<=>4352804 OR movie_link.movie_id>4352804) AND (movie_link.linked_movie_id<=>4352801 OR movie_link.linked_movie_id<4352801) AND (movie_link.link_type_id<=>1 OR movie_link.link_type_id>1)) LIMIT 100 |
| 2.sql | 8 | 1823.5ms ±13% | 1585.2ms ±17% | 87.5% | #8(86.9%) | count:0, median:NaN, 90th:NaN, 95th:NaN, max:NaN | SELECT * FROM ((aka_title) JOIN movie_link) JOIN role_type WHERE ((aka_title.id<=>376255 OR aka_title.id>376255) AND (aka_title.movie_id<=>4214852 OR aka_title.movie_id<4214852) OR (aka_title.title<=>"Five Bottles of Vodka" OR aka_title.title<"Five Bottles of Vodka") OR (aka_title.kind_id<=>1 OR aka_title.kind_id<1) AND (aka_title.production_year<=>2001 OR aka_title.production_year<2001) OR (aka_title.phonetic_code<=>"F1342" OR aka_title.phonetic_code>"F1342") AND (aka_title.episode_of_id<=>NULL OR aka_title.episode_of_id>NULL) AND (aka_title.md5sum<=>"8967ac41f4e49966612fe9a32fea51bc" OR aka_title.md5sum>"8967ac41f4e49966612fe9a32fea51bc")) AND ((movie_link.id<=>553749 OR movie_link.id>553749) OR (movie_link.movie_id<=>2796348 OR movie_link.movie_id>2796348) OR (movie_link.linked_movie_id<=>3801095 OR movie_link.linked_movie_id>3801095) OR (movie_link.link_type_id<=>5 OR movie_link.link_type_id<5)) AND ((role_type.id<=>4 OR role_type.id<4) AND (role_type.role<=>"writer" OR role_type.role<"writer")) LIMIT 100 |
| 3.sql | 6 | 5879.8ms ±51% | 2026.8ms ±15% | 50.0% | #4(43.0%),#5(34.5%),#6(37.7%) | count:0, median:NaN, 90th:NaN, 95th:NaN, max:NaN | SELECT * FROM (movie_keyword) JOIN name WHERE ((movie_keyword.id<=>2737256 OR movie_keyword.id>2737256) AND (movie_keyword.movie_id<=>3516666 OR movie_keyword.movie_id>3516666) OR (movie_keyword.keyword_id<=>48502 OR movie_keyword.keyword_id<48502)) AND ((name.id<=>3485090 OR name.id>3485090) AND (name.name<=>"López, Gaby" OR name.name<"López, Gaby") OR (name.imdb_id<=>NULL OR name.imdb_id>NULL) AND (name.gender<=>"f" OR name.gender<"f") AND (name.name_pcode_cf<=>"L121" OR name.name_pcode_cf>"L121") AND (name.name_pcode_nf<=>"G1412" OR name.name_pcode_nf>"G1412") AND (name.surname_pcode<=>"L12" OR name.surname_pcode<"L12") OR (name.md5sum<=>"14a2e9f03adf9be89fb406fb9e0b4748" OR name.md5sum<"14a2e9f03adf9be89fb406fb9e0b4748")) LIMIT 100 |
+--------+-------------+------------------------+--------------------------+---------------+-------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------+-------------+------------------------+--------------------------+---------------+-------------------------------------------------------------+--------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ID | #PLAN SPACE | DEFAULT EXECUTION TIME | BEST PLAN EXECUTION TIME | EFFECTIVENESS | BETTER OPTIMAL PLANS | ESTROW Q-ERROR | QUERY |
+--------+-------------+------------------------+--------------------------+---------------+-------------------------------------------------------------+--------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 13.sql | 2 | 3690.8ms ±71% | 1983.8ms ±21% | 50.0% | #2(53.7%) | count:0, median:NaN, 90th:NaN, 95th:NaN, max:NaN | SELECT * FROM (movie_companies) JOIN person_info WHERE ((movie_companies.id<=>3223225 OR movie_companies.id<3223225) OR (movie_companies.movie_id<=>2400151 OR movie_companies.movie_id>2400151) OR (movie_companies.company_id<=>13496 OR movie_companies.company_id>13496) AND (movie_companies.company_type_id<=>2 OR movie_companies.company_type_id>2)) AND ((person_info.id<=>3582946 OR person_info.id<3582946) AND (person_info.person_id<=>2299555 OR person_info.person_id<2299555) AND (person_info.info_type_id<=>17 OR person_info.info_type_id>17)) LIMIT 100 |
| 37.sql | 8 | 44037.2ms ±14% | 18121.5ms ±14% | 25.0% | #1(45.2%),#2(41.2%),#3(43.4%),#4(43.4%),#5(42.7%),#6(43.0%) | count:0, median:NaN, 90th:NaN, 95th:NaN, max:NaN | SELECT * FROM ((cast_info) JOIN char_name) JOIN link_type WHERE ((cast_info.id<=>143490 OR cast_info.id<143490) OR (cast_info.person_id<=>20921 OR cast_info.person_id<20921) OR (cast_info.movie_id<=>3636833 OR cast_info.movie_id>3636833) AND (cast_info.person_role_id<=>NULL OR cast_info.person_role_id>NULL) AND (cast_info.nr_order<=>8 OR cast_info.nr_order<8) OR (cast_info.role_id<=>1 OR cast_info.role_id<1)) AND ((char_name.id<=>3117118 OR char_name.id>3117118) OR (char_name.name<=>"La mère toilettes aéroport" OR char_name.name>"La mère toilettes aéroport") OR (char_name.imdb_index<=>NULL OR char_name.imdb_index>NULL) AND (char_name.imdb_id<=>NULL OR char_name.imdb_id>NULL) AND (char_name.name_pcode_nf<=>"L5634" OR char_name.name_pcode_nf>"L5634") AND (char_name.surname_pcode<=>"A6163" OR char_name.surname_pcode<"A6163") OR (char_name.md5sum<=>"9ce53f6be0e22e7ae1d79d738f6d468f" OR char_name.md5sum>"9ce53f6be0e22e7ae1d79d738f6d468f")) AND ((link_type.id<=>16 OR link_type.id<16) OR (link_type.link<=>"edited from" OR link_type.link>"edited from")) LIMIT 100 |
| 8.sql | 8 | 390.2ms ±11% | 212.8ms ± 8% | 25.0% | #1(57.9%),#2(59.3%),#3(57.1%),#4(54.5%),#5(55.7%),#6(55.7%) | count:0, median:NaN, 90th:NaN, 95th:NaN, max:NaN | SELECT * FROM ((keyword) JOIN company_name) JOIN company_type WHERE ((keyword.id<=>53697 OR keyword.id<53697) OR (keyword.keyword<=>"shadow-monster" OR keyword.keyword<"shadow-monster") AND (keyword.phonetic_code<=>"S3523" OR keyword.phonetic_code>"S3523")) AND ((company_name.id<=>188721 OR company_name.id>188721) AND (company_name.name<=>"Cruel Stories Inc." OR company_name.name<"Cruel Stories Inc.") AND (company_name.country_code<=>NULL OR company_name.country_code<NULL) AND (company_name.imdb_id<=>NULL OR company_name.imdb_id>NULL) AND (company_name.name_pcode_nf<=>"C6423" OR company_name.name_pcode_nf<"C6423") OR (company_name.name_pcode_sf<=>NULL OR company_name.name_pcode_sf>NULL) AND (company_name.md5sum<=>"478e25ef9abacb4804a3f9a912854c37" OR company_name.md5sum>"478e25ef9abacb4804a3f9a912854c37")) AND ((company_type.id<=>1 OR company_type.id<1) OR (company_type.kind<=>"distributors" OR company_type.kind>"distributors")) LIMIT 100 |
+--------+-------------+------------------------+--------------------------+---------------+-------------------------------------------------------------+--------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Index Selection
Reproduction step
- download indexes files: dyn.zip
- add index:
./bin/horo -d "root:@tcp(localhost:4000)/imdb?charset=utf8" index add
- bench:
./bin/horo -r 4 -d "root:@tcp(localhost:4000)/imdb?charset=utf8" bench
+--------+-------------+------------------------+--------------------------+---------------+-------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ID | #PLAN SPACE | DEFAULT EXECUTION TIME | BEST PLAN EXECUTION TIME | EFFECTIVENESS | BETTER OPTIMAL PLANS | ESTROW Q-ERROR | QUERY | +--------+-------------+------------------------+--------------------------+---------------+-------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 1.sql | 2 | 623.0ms ±25% | 401.8ms ±30% | 50.0% | #1(64.5%) | count:0, median:NaN, 90th:NaN, 95th:NaN, max:NaN | SELECT * FROM (aka_title) JOIN movie_link WHERE ((aka_title.id<=>242091 OR aka_title.id>242091) AND (aka_title.movie_id<=>3865448 OR aka_title.movie_id>3865448) OR (aka_title.title<=>"Golden jade slave" OR aka_title.title<"Golden jade slave") OR (aka_title.kind_id<=>1 OR aka_title.kind_id>1) OR (aka_title.production_year<=>1962 OR aka_title.production_year>1962) OR (aka_title.phonetic_code<=>"G4352" OR aka_title.phonetic_code<"G4352") AND (aka_title.episode_of_id<=>NULL OR aka_title.episode_of_id<NULL) OR (aka_title.md5sum<=>"0422d64139af699bceac3265e154fe04" OR aka_title.md5sum>"0422d64139af699bceac3265e154fe04")) AND ((movie_link.id<=>1996389 OR movie_link.id>1996389) AND (movie_link.movie_id<=>4352804 OR movie_link.movie_id>4352804) AND (movie_link.linked_movie_id<=>4352801 OR movie_link.linked_movie_id<4352801) AND (movie_link.link_type_id<=>1 OR movie_link.link_type_id>1)) LIMIT 100 | | 2.sql | 8 | 1823.5ms ±13% | 1585.2ms ±17% | 87.5% | #8(86.9%) | count:0, median:NaN, 90th:NaN, 95th:NaN, max:NaN | SELECT * FROM ((aka_title) JOIN movie_link) JOIN role_type WHERE ((aka_title.id<=>376255 OR aka_title.id>376255) AND (aka_title.movie_id<=>4214852 OR aka_title.movie_id<4214852) OR (aka_title.title<=>"Five Bottles of Vodka" OR aka_title.title<"Five Bottles of Vodka") OR (aka_title.kind_id<=>1 OR aka_title.kind_id<1) AND (aka_title.production_year<=>2001 OR aka_title.production_year<2001) OR (aka_title.phonetic_code<=>"F1342" OR aka_title.phonetic_code>"F1342") AND (aka_title.episode_of_id<=>NULL OR aka_title.episode_of_id>NULL) AND (aka_title.md5sum<=>"8967ac41f4e49966612fe9a32fea51bc" OR aka_title.md5sum>"8967ac41f4e49966612fe9a32fea51bc")) AND ((movie_link.id<=>553749 OR movie_link.id>553749) OR (movie_link.movie_id<=>2796348 OR movie_link.movie_id>2796348) OR (movie_link.linked_movie_id<=>3801095 OR movie_link.linked_movie_id>3801095) OR (movie_link.link_type_id<=>5 OR movie_link.link_type_id<5)) AND ((role_type.id<=>4 OR role_type.id<4) AND (role_type.role<=>"writer" OR role_type.role<"writer")) LIMIT 100 | | 3.sql | 6 | 5879.8ms ±51% | 2026.8ms ±15% | 50.0% | #4(43.0%),#5(34.5%),#6(37.7%) | count:0, median:NaN, 90th:NaN, 95th:NaN, max:NaN | SELECT * FROM (movie_keyword) JOIN name WHERE ((movie_keyword.id<=>2737256 OR movie_keyword.id>2737256) AND (movie_keyword.movie_id<=>3516666 OR movie_keyword.movie_id>3516666) OR (movie_keyword.keyword_id<=>48502 OR movie_keyword.keyword_id<48502)) AND ((name.id<=>3485090 OR name.id>3485090) AND (name.name<=>"López, Gaby" OR name.name<"López, Gaby") OR (name.imdb_id<=>NULL OR name.imdb_id>NULL) AND (name.gender<=>"f" OR name.gender<"f") AND (name.name_pcode_cf<=>"L121" OR name.name_pcode_cf>"L121") AND (name.name_pcode_nf<=>"G1412" OR name.name_pcode_nf>"G1412") AND (name.surname_pcode<=>"L12" OR name.surname_pcode<"L12") OR (name.md5sum<=>"14a2e9f03adf9be89fb406fb9e0b4748" OR name.md5sum<"14a2e9f03adf9be89fb406fb9e0b4748")) LIMIT 100 | +--------+-------------+------------------------+--------------------------+---------------+-------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------+-------------+------------------------+--------------------------+---------------+-------------------------------------------------------------+--------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ID | #PLAN SPACE | DEFAULT EXECUTION TIME | BEST PLAN EXECUTION TIME | EFFECTIVENESS | BETTER OPTIMAL PLANS | ESTROW Q-ERROR | QUERY | +--------+-------------+------------------------+--------------------------+---------------+-------------------------------------------------------------+--------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 13.sql | 2 | 3690.8ms ±71% | 1983.8ms ±21% | 50.0% | #2(53.7%) | count:0, median:NaN, 90th:NaN, 95th:NaN, max:NaN | SELECT * FROM (movie_companies) JOIN person_info WHERE ((movie_companies.id<=>3223225 OR movie_companies.id<3223225) OR (movie_companies.movie_id<=>2400151 OR movie_companies.movie_id>2400151) OR (movie_companies.company_id<=>13496 OR movie_companies.company_id>13496) AND (movie_companies.company_type_id<=>2 OR movie_companies.company_type_id>2)) AND ((person_info.id<=>3582946 OR person_info.id<3582946) AND (person_info.person_id<=>2299555 OR person_info.person_id<2299555) AND (person_info.info_type_id<=>17 OR person_info.info_type_id>17)) LIMIT 100 | | 37.sql | 8 | 44037.2ms ±14% | 18121.5ms ±14% | 25.0% | #1(45.2%),#2(41.2%),#3(43.4%),#4(43.4%),#5(42.7%),#6(43.0%) | count:0, median:NaN, 90th:NaN, 95th:NaN, max:NaN | SELECT * FROM ((cast_info) JOIN char_name) JOIN link_type WHERE ((cast_info.id<=>143490 OR cast_info.id<143490) OR (cast_info.person_id<=>20921 OR cast_info.person_id<20921) OR (cast_info.movie_id<=>3636833 OR cast_info.movie_id>3636833) AND (cast_info.person_role_id<=>NULL OR cast_info.person_role_id>NULL) AND (cast_info.nr_order<=>8 OR cast_info.nr_order<8) OR (cast_info.role_id<=>1 OR cast_info.role_id<1)) AND ((char_name.id<=>3117118 OR char_name.id>3117118) OR (char_name.name<=>"La mère toilettes aéroport" OR char_name.name>"La mère toilettes aéroport") OR (char_name.imdb_index<=>NULL OR char_name.imdb_index>NULL) AND (char_name.imdb_id<=>NULL OR char_name.imdb_id>NULL) AND (char_name.name_pcode_nf<=>"L5634" OR char_name.name_pcode_nf>"L5634") AND (char_name.surname_pcode<=>"A6163" OR char_name.surname_pcode<"A6163") OR (char_name.md5sum<=>"9ce53f6be0e22e7ae1d79d738f6d468f" OR char_name.md5sum>"9ce53f6be0e22e7ae1d79d738f6d468f")) AND ((link_type.id<=>16 OR link_type.id<16) OR (link_type.link<=>"edited from" OR link_type.link>"edited from")) LIMIT 100 | | 8.sql | 8 | 390.2ms ±11% | 212.8ms ± 8% | 25.0% | #1(57.9%),#2(59.3%),#3(57.1%),#4(54.5%),#5(55.7%),#6(55.7%) | count:0, median:NaN, 90th:NaN, 95th:NaN, max:NaN | SELECT * FROM ((keyword) JOIN company_name) JOIN company_type WHERE ((keyword.id<=>53697 OR keyword.id<53697) OR (keyword.keyword<=>"shadow-monster" OR keyword.keyword<"shadow-monster") AND (keyword.phonetic_code<=>"S3523" OR keyword.phonetic_code>"S3523")) AND ((company_name.id<=>188721 OR company_name.id>188721) AND (company_name.name<=>"Cruel Stories Inc." OR company_name.name<"Cruel Stories Inc.") AND (company_name.country_code<=>NULL OR company_name.country_code<NULL) AND (company_name.imdb_id<=>NULL OR company_name.imdb_id>NULL) AND (company_name.name_pcode_nf<=>"C6423" OR company_name.name_pcode_nf<"C6423") OR (company_name.name_pcode_sf<=>NULL OR company_name.name_pcode_sf>NULL) AND (company_name.md5sum<=>"478e25ef9abacb4804a3f9a912854c37" OR company_name.md5sum>"478e25ef9abacb4804a3f9a912854c37")) AND ((company_type.id<=>1 OR company_type.id<1) OR (company_type.kind<=>"distributors" OR company_type.kind>"distributors")) LIMIT 100 | +--------+-------------+------------------------+--------------------------+---------------+-------------------------------------------------------------+--------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Thanks~ I will analyze these slow SQLs soon.
Here is the Chinese analysis document about index selection tests.
I generate 50 SQLs on only one table each, to get rid of the interference of table join, this is the report, you need to apply the same add-indexes.sql on above.
+--------+-------------+------------------------+--------------------------+---------------+-----------------------------------------+------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ID | #PLAN SPACE | DEFAULT EXECUTION TIME | BEST PLAN EXECUTION TIME | EFFECTIVENESS | BETTER OPTIMAL PLANS | ESTROW Q-ERROR | QUERY |
+--------+-------------+------------------------+--------------------------+---------------+-----------------------------------------+------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 21.sql | 2 | 1: 5.6ms ±100% | 2.0ms ± 0% | 50.0% | #1(35.7%) | count:1, median:1.7, 90th:1.7, 95th:1.7, max:1.7 | SELECT * FROM cast_info WHERE ((cast_info.id<=47868212) AND (cast_info.person_id<=2245656) AND (cast_info.movie_id<=3347883) OR (cast_info.person_role_id IS NULL) AND (cast_info.nr_order IS NULL) AND (cast_info.role_id<=5)) LIMIT 100 |
| 3.sql | 6 | 0: 423.4ms ±99% | 153.4ms ±78% | 66.7% | #4(36.2%),#6(46.9%) | count:1, median:6.6, 90th:6.6, 95th:6.6, max:6.6 | SELECT * FROM aka_title WHERE ((aka_title.id>=329003) AND (aka_title.movie_id<=4074751) OR (aka_title.title<="Bloody Banjo: Extreme Edition") AND (aka_title.imdb_index IS NULL) AND (aka_title.kind_id>=1) OR (aka_title.production_year>=2017) AND (aka_title.phonetic_code<="B4315") AND (aka_title.episode_of_id IS NULL) AND (aka_title.season_nr IS NULL) AND (aka_title.episode_nr IS NULL) AND (aka_title.md5sum>="405b8b1a7b237a107610fddd4adcb4f3")) ORDER BY aka_title.imdb_index LIMIT 100 |
| 31.sql | 26 | 0: 2615.0ms ±21% | 236.2ms ±97% | 92.3% | #1(11.8%),#14(9.0%) | count:12, median:100.0, 90th:457.9, 95th:493.1, max:493.1 | SELECT * FROM cast_info WHERE ((cast_info.id<=295701) AND (cast_info.person_id>=42240) AND (cast_info.movie_id<=3612014) AND (cast_info.person_role_id>=69608) AND (cast_info.nr_order IS NULL) AND (cast_info.role_id<=1)) LIMIT 100 |
| 34.sql | 22 | 0: 13.0ms ±111% | 2.4ms ±50% | 95.5% | #1(18.5%) | count:11, median:10.7, 90th:37.8, 95th:37.8, max:37.8 | SELECT * FROM complete_cast WHERE ((complete_cast.id<=10610) AND (complete_cast.movie_id<=411932) AND (complete_cast.subject_id>=1) AND (complete_cast.status_id>=3)) LIMIT 100 |
| 38.sql | 6 | 0: 745.2ms ±27% | 226.0ms ±135% | 66.7% | #4(30.3%),#6(31.9%) | count:1, median:1.3, 90th:1.3, 95th:1.3, max:1.3 | SELECT * FROM aka_name WHERE ((aka_name.id>=1212531) OR (aka_name.person_id<=3622168) AND (aka_name.name<="Muñiz, Emme Maribel") AND (aka_name.imdb_index IS NULL) OR (aka_name.name_pcode_cf>="M2561") AND (aka_name.name_pcode_nf<="E5614") OR (aka_name.surname_pcode>="M2") AND (aka_name.md5sum>="c32f43ef8cc95c6180aef2e7799ec92a")) ORDER BY aka_name.name_pcode_nf LIMIT 100 |
| 41.sql | 8 | 0: 59.8ms ±27% | 35.4ms ±48% | 50.0% | #3(63.9%),#4(64.9%),#7(59.2%),#8(67.6%) | count:3, median:5.0, 90th:5.0, 95th:5.0, max:5.0 | SELECT * FROM keyword WHERE ((keyword.id>=164082) AND (keyword.keyword>="bleeding-from-the-mouth") AND (keyword.phonetic_code<="B4352")) ORDER BY keyword.keyword LIMIT 100 |
| 45.sql | 2 | 1: 4.5ms ±275% | 3.0ms ±33% | 50.0% | #1(66.7%) | count:1, median:2.2, 90th:2.2, 95th:2.2, max:2.2 | SELECT * FROM title WHERE ((title.id>=2669501) AND (title.title<="Volunteer") OR (title.imdb_index IS NULL) OR (title.kind_id>=7) OR (title.production_year<=1997) AND (title.imdb_id IS NULL) OR (title.phonetic_code>="V4536") AND (title.episode_of_id<=2669280) AND (title.season_nr>=3) OR (title.episode_nr<=11) AND (title.series_years IS NULL) AND (title.md5sum<="e0330d4fc80403189b9c99422162d375")) LIMIT 100 |
+--------+-------------+------------------------+--------------------------+---------------+-----------------------------------------+------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
I design two control groups. The first group turns off auto analyze and feedback. The second group turns off auto analyze but turns on feedback.
Experiment steps:
performance.run-auto-analyze: false
and create imdb_slice db using schema.sqlpython3.6 load_half.py
python3.6 run.py
Seems there existed the effectiveness regression on some SQLs.
SELECT * FROM title WHERE (title.id IS NOT NULL AND title.title!="(#1.69)" AND title.imdb_index IS NULL AND title.kind_id<8 AND title.production_year!=1974 AND title.imdb_id IS NULL AND title.phonetic_code IS NULL AND title.episode_of_id>184590 AND title.season_nr IS NULL AND title.episode_nr IS NULL AND title.series_years IS NULL AND title.md5sum<="7cf95ddbd379fdb3e530e0721ff61494") LIMIT 100
Reproduce Steps
TiDB Server Configuration
Prepare IMDB:
Refer to https://github.com/gregrahn/join-order-benchmark#step-by-step-instructions
Run Horo:
Test Report
How to read the report:
ID
: query id#PLAN SPACE
: the plan space size of a queryDEFAULT EXECUTION TIME
: the execution time of default plan, giving in the format of "Mean ±Diff", "Mean" is the mean value ofround
rounds, and "Diff" is the lower/upper bound of the mean valueBEST PLAN EXECUTION TIME
: the execution time of the best planEFFECTIVENESS
: the percent of the execution time of the default plan better than others on plan spaceBETTER OPTIMAL PLANS
: gives the better plan, each item is giving in the format of "nth_plan id(\<execution time> / \<default execution time>)"QUERY
: the query