アクティビティ ログを格納するテーブル (InnoDB) があります。各行には、ユーザー ID、アクティビティ ID、および位置データがあります。ユーザー ID とアクティビティ ID の列は、一意ではありませんが、インデックスが作成されます。
select *
返されたデータを照会すると、正常に見えます-
select * from table
ユーザー ID またはアクティビティ ID を別の列 (これら 2 つを一緒にしても) でクエリすると、データは正常に見えます。
select user_id, city from table
whereステートメントを使用してユーザーIDまたはアクティビティIDのみを照会すると、データは正常に見えます。
select user_id from table where city = 'boulder'
この問題は、ユーザー ID またはアクティビティ ID のみをクエリするか、部分文字列クエリを使用して同じ列の where ステートメントを使用して 1 つだけをクエリすると発生します。
select user_id from table
また
select user_id from table where substring(user_id, 1,5) = '12345'
返されるデータはフィールド内のデータではなく、インデックスの場所 (または類似のもの) のように見えます。インデックスを削除したところ、問題は修正されましたが、インデックスを追加し直すとすぐに再発しました。
インデックスなしの例 -
user_id
-------
123456789
231234567
234567543
インデックス付きの例 -
user_id
-------
081357652234
100000000000000
1000000000011
サーバーを再起動してから、API からデータをリロードしようとしましたが、何も役に立ちませんでした。この問題を経験することなく、同じデータベース内の他のテーブルでこれをテストしました。
これはバグですか、それとも設定の間違いですか?