
# 单表点查询性能差
#### 问题现象
单表查询的场景下，预期1s以内返回结果，实际执行耗时超过10s。
#### 原因分析
行列存表选择错误导致的问题，点查询场景应该使用行存表+B-Tree索引。
#### 分析过程
1. 通过抓取问题SQL的执行信息，发现大部分的耗时都在"CStore Scan"。 
   ![](https://support.huaweicloud.com/trouble-dws/figure/zh-cn_image_0000001117684916.png "点击放大")
   
   
2. 分析出问题的场景：基表是一张十亿级别的表，每晚有批量增量数据入库，同时会有少量的数据清洗的工作。白天会有高并发的查询操作，查询不涉及表关联，并且返回结果都不大。
 
#### 处理方法
调整表定义，将表修改为行存表，同时建立B-Tree索引，索引建立的原则：
1. 在经常需要搜索查询的列上创建索引，可以加快搜索的速度。
2. 不要定义冗余或重复的索引。
3. 建立组合索引的时候，要把过滤性比较好的列往前放。
4. 为经常出现在关键字ORDER BY、GROUP BY、DISTINCT后面的字段建立索引。
5. 在经常使用WHERE子句的列上创建索引，加快条件的判断速度。
 
