Posted to tcl by Stu at Thu Sep 08 18:12:22 GMT 2022view pretty
if 0 { -- Suppose a table: n char(30), v char(1). CREATE TABLE t(n char(30), v char(1)); -- Create the table with appropriate indexes then fill 300,000 recs with -- n=random 30 chars and v=random chars in range [A-Z]. INSERT INTO t(n, v) WITH RECURSIVE tmp(n, v) AS ( SELECT 1, SUBSTR('ABCDEFGHIJKLMNOPQRSTUVWXYZ', FLOOR((RANDOM() + 9223372036854775808) / 2.0 / 9223372036854775808 * 26) + 1, 1) UNION ALL SELECT n + 1, SUBSTR('ABCDEFGHIJKLMNOPQRSTUVWXYZ', FLOOR((RANDOM() + 9223372036854775808) / 2.0 / 9223372036854775808 * 26) + 1, 1) FROM tmp LIMIT 300000 -- !!! Replace with the actual number of records !!! ) SELECT ( WITH rand_string(n, v, chars) AS ( SELECT 1, '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' UNION ALL SELECT rand_string.n + 1, rand_string.v || SUBSTR(chars, FLOOR(( (0 * tmp.n) + RANDOM() + 9223372036854775808) / 2.0 / 9223372036854775808 * LENGTH(chars)) + 1, 1), chars FROM rand_string WHERE rand_string.n <= 30 ) SELECT rand_string.v FROM rand_string WHERE rand_string.n = 30 ), tmp.v FROM tmp; CREATE INDEX tvn ON t(v, n); ANALYZE t; }