次のようなテーブルがあります。
`id` int(11) NOT NULL AUTO_INCREMENT,
`torderid` int(11) DEFAULT NULL,
`tuid` int(11) DEFAULT NULL,
`tcontid` int(11) DEFAULT NULL,
`tstatus` varchar(10) DEFAULT 'pending',
ここでのルールは、同じユーザー UID が同じ contid を持つ保留中の注文を複数持つことはできないということです。
最初にできることは、次のような保留中の注文があるかどうかを確認することです。
select count(id) into @cnt from tblorders where tuid = 1 and tcontid=5 and tstatus like 'pending';
> 0 の場合は挿入できません。
または、3 つの列に一意のインデックスを作成するだけで、テーブルが重複の新しいレコードを受け入れなくなります。
問題は次のとおりです。どの方法が速いですか? それは大規模なデータベースになるからです...