CockroachDB 実行計画/ヒント句/統計情報

 

OS: Rocky Linux 9.2 
CockroachDB: v23.2.0


cockroach sql \
--certs-dir=/cockroach/crc/certs \
--host=mmm191

-- 1. テストデータ作成

cockroach workload init movr postgresql://myuser:myuser@mmm191:26257?sslmode=require&sslcert=/cockroach/crc/certs/client.myuser.crt&sslkey=/cockroach/crc/certs/client.myuser.key&sslrootcert=/cockroach/crc/certs/ca.crt

cockroach workload run movr --duration 10s postgresql://myuser:myuser@mmm191:26257?sslmode=require&sslcert=/cockroach/crc/certs/client.myuser.crt&sslkey=/cockroach/crc/certs/client.myuser.key&sslrootcert=/cockroach/crc/certs/ca.crt \


-- 2. 実行計画

show statements;

explain 
select * from rides where end_address = '77215 Gina Lake Apt. 13';

explain analyze 
select * from rides where end_address = '77215 Gina Lake Apt. 13';


-- 3. ヒント句


-- 3.1 インデックスヒント

show create table rides;


explain analyze 
select start_time, end_time
from rides
where city = 'amsterdam'
and end_address = '7215 Gina Lake Apt. 13'
;


explain analyze 
select start_time, end_time
from rides@rides_auto_index_fk_city_ref_users
where city = 'amsterdam'
and end_address = '7215 Gina Lake Apt. 13'
;

-- 3.2 結合ヒント

explain analyze 
select count(*) from rides r 
inner join vehicles v 
on r.vehicle_city = v.city 
and r.vehicle_id = v.id 
;

explain analyze 
select count(*) from rides r 
inner merge join vehicles v 
on r.vehicle_city = v.city 
and r.vehicle_id = v.id 
;

explain analyze 
select count(*) from rides r 
inner lookup join vehicles v 
on r.vehicle_city = v.city 
and r.vehicle_id = v.id 
;

explain analyze 
select count(*) from rides r 
inner hash join vehicles v 
on r.vehicle_city = v.city 
and r.vehicle_id = v.id 
;

-- 4. 統計情報


show statistics for table rides;


create statistics stats01 from rides;