SELECT SQL_NO_CACHE count( 0 ) FROM lab_model_auction_extract_category_distribute lmaecd LEFT JOIN lab_model_auction_extract_category lmaec ON lmaecd.auction_extract_id = lmaec.auction_id WHERE lmaecd.is_deleted = 0 AND lmaecd.status = 1 AND lmaecd.uid = 1563; SQL优化
时间: 2023-10-04 14:04:49 浏览: 77
对这条 SQL 查询语句进行优化可以考虑以下几点:
1. 索引优化:为 `lab_model_auction_extract_category_distribute` 表的 `is_deleted`、`status`、`uid` 字段以及 `lab_model_auction_extract_category` 表的 `auction_id` 字段建立索引,加快查询速度。
2. 避免使用 `count(0)`,可以改为使用 `count(*)`,这样可以避免在查询时对记录进行额外的计算,提高查询效率。
3. 尽量避免使用 `LEFT JOIN`,可以考虑使用 `INNER JOIN` 来代替,因为 `INNER JOIN` 可以将查询的数据集大小缩小,从而提高查询效率。
4. 避免使用 `SELECT SQL_NO_CACHE`,因为这会导致缓存失效,增加系统负担。
综合以上几点,可以对这条 SQL 查询语句进行优化,例如:
```
SELECT COUNT(*) FROM lab_model_auction_extract_category_distribute lmaecd JOIN lab_model_auction_extract_category lmaec ON lmaecd.auction_extract_id = lmaec.auction_id WHERE lmaecd.is_deleted = 0 AND lmaecd.status = 1 AND lmaecd.uid = 1563;
```
同时,需要为 `lab_model_auction_extract_category_distribute` 表的 `is_deleted`、`status`、`uid` 字段以及 `lab_model_auction_extract_category` 表的 `auction_id` 字段建立索引,可以提高查询效率。
阅读全文