mysql建立了索引但是leftjoin索引失效

本文探讨了一条SQL语句查询速度缓慢的问题,通过explain分析发现特定表的索引未生效。文章揭示了一个鲜为人知的原因:数据库中数据量过少可能导致索引失效,并分享了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SELECT
	a.*, CONCAT_WS('', parent. NAME, b. NAME) cityName,
	CONCAT_WS(
		'%',
		att.attachment_name,
		attachment_url
	) attachment,
	c. NAME companyName,
	d. NAME typeName,
	e. NAME stageName,
	f. NAME winningBidCompanyName
FROM
	bid_info a
LEFT JOIN sys_city_info b ON b. CODE = a.city_code
LEFT JOIN company_info c ON a.company_id = c.id
LEFT JOIN dic_bid_type d ON a.bid_code = d. CODE
LEFT JOIN dic_project_stage e ON e. CODE = a. STATUS
LEFT JOIN company_info f ON a.winning_bid_company_id = f.id
LEFT JOIN sys_city_info parent ON b.parent_code = parent. CODE
LEFT JOIN attach_info att ON att.foreign_key = a.id
AND att.type = '1'
WHERE
	1 = 1
ORDER BY
	create_time
LIMIT 0,10

就这条sql语句查询速度非常慢
其中对sql进行 explain分析,发现是下面这张表的索引没有生效
LEFT JOIN dic_bid_type d ON a.bid_code = d. CODE
各种分析了网上说的可能有的原因都还是没有解决,最后好像是偶然在哪儿看到说

数据库中的数据太少也会导致索引失效

结果真的是这个原因,因为我这张表数据库里面就四条数据,增加了几条多余数据过后索引就生效了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值