私は UUID を文字列として持っており、データベースには何千ものアイテムがあります。基本的なクエリでさえ、読み込みに数秒かかるようです。より複雑なクエリを実行すると、数分かかることになります。
私の最大のボトルネックは、文字列比較を何千回も行っていることだと思います
データベースをそのままにしておく方法はありますが、クエリ構文を変換して UUID を数値としてキャストする方法はありますか?
または、それが役に立たない場合、文字列を数値に変換するにはどうすればよいですか?
ありがとうございました
編集:
16 個のテーブルがすべて相互接続されているため、すべてのテーブルがどのように相互接続されているかを投稿するのは困難ですが、いくつかのサンプルを次に示します。
field Type
UUID - TEXT
"SELECT * FROM customer WHERE UUID = '$custUUID'";
phpmyadmin から実行すると、この単純なクエリに 0.7 秒かかります。これを何百回も実行しようとすると、読み込み時間が長くなります。
MySQL returned an empty result set (i.e. zero rows). ( Query took 0.6967 sec )
SELECT *
FROM customer
WHERE UUID = '1234'
LIMIT 0 , 30
これは、reportdate、contract_UUID、customer_UUID、garcom_UUID、city_UUID がすべてテキスト型である、より複雑なクエリの例です。
$query = "SELECT DISTINCT a.weekreportDate FROM contract_sales a
INNER JOIN contract b ON a.contract_UUID = b.UUID
INNER JOIN geoPoint c ON b.customer_UUID = c.customerUUID
WHERE c.garcom_UUID = '$garbcom'
AND c.city_UUID = '$cit' ORDER BY `report_date`";
これは、phpmyadmin http://prntscr.com/1airfdのテーブルの 1 つの画像です。