I assume your large files are already sorted... You can simply add leading zeros to the keys, using `sed` ... Because the process is pipelined, there are no temporary files to deal with. The `sed` overhead it trivial.
join -a1 -11 <(sed -r 's/^([0-9]+)/000000000\1/;s/^0+([0-9]{9})/\1/' file1) \
<(sed -r 's/^([0-9]+)/000000000\1/;s/^0+([0-9]{9})/\1/' file2)
Output is:
000000001 lkj klj lkj
000000002 lkj lkj lkj
000000003
000000004
000000005
000000006
000000007 lkj lkj lkj
000000008
000000009
000000010
000000011 lkk kll lkk
If you don't want the leading zeros in the output, you can strip them off with another simple inline `sed` step.
join -a1 -11 <(sed -r 's/^([0-9]+)/000000000\1/;s/^0+([0-9]{9})/\1/' file1) \
<(sed -r 's/^([0-9]+)/000000000\1/;s/^0+([0-9]{9})/\1/' file2) |
sed -r 's/^0+//'
Output
1 lkj klj lkj
2 lkj lkj lkj
3
4
5
6
7 lkj lkj lkj
8
9
10
11 lkk kll lkk