現在、検査データは検査室の windows 7 上にある sqlserver に同じネットワーク上の ubuntu からアクセスして、必要な項目を読み込んで ubuntu 上のsqlite3 に書き込み、それを端末の linux mint や windows から閲覧しています。
テーブルは2つあって、kensa と kekka テーブルです。
kensa は日付・受付番号・カルテ番号などです。
kekka は日付・受付番号・検査結果などが記録されています。

この2つのテーブルをリレーションして検査結果を閲覧することができます。
最初は以下のようなクエリでデータを抽出していました。
このクエリでデータの抽出はできるのですが、500 万行の kekka テーブルから 3157 個のデータを抽出するのに 5 秒ちょっとかかります。
テーブルのリレーションじゃなくてサブクエリを使うと抽出時間が劇的に速くなります。
このクエリの実行時間は 2 秒ちょっとと半分以下になります。
しかもサブクエリを使う方法だと、抽出件数を限定することができます。
検査結果を過去分すべてを表示するのは効率が悪いので、以下のように過去 30 件分にすると 1 秒以内で抽出することができるようになります。
テーブルのリレーションでも limit 30 は当然できますが、そうすると日付で限定するわけではないのでデータが途中で切れてしまうことになります。