[英]How to simplify these indexes to increase performance of SQL queries
我在给定顺序的不同SQL查询的WHERE子句中使用以下字段。 我应该在单个列上创建索引,还是应该创建复合索引。 如何简化以下内容以创建性能更好的更少索引。
会员表
member_id (primary key)
WHERE user_id = $user_id AND member_id = $member_id
WHERE user_id = $user_id AND name LIKE '%$keywords%'
WHERE user_id = $user_id AND expiry_date < CURDATE()
WHERE user_id = $user_id AND expiry_date BETWEEN '1990-01-01' AND '2000-01-01'
付款表
payment_id (primary key)
WHERE user_id = $user_id AND member_id = $member_id
WHERE user_id = $user_id AND member_id = $member_id AND payment_id = $payment_id
这里没有提及“用户”表,它实际上是主帐户表,成员表中有许多成员
假设您的表是InnoDB:
WHERE user_id = $user_id AND expiry_date < CURDATE()
在(user_id, expiry_date)
创建索引
WHERE user_id = $user_id AND name LIKE '%$keywords%'
这不会从索引中受益,因为您所使用的类似条件不可保留。 不过,您可以在(user_id, name)
上创建覆盖索引。
WHERE user_id = $user_id AND member_id = $member_id
不需要索引,因为member_id
是主键
WHERE user_id = $user_id AND member_id = $member_id AND payment_id = $payment_id
由于payment_id
是主键,因此不需要索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.