1. FLOAT和DOUBLE的区别是什么? FLOAT类型用于存储浮点数,最多存储8位十进制数,占用4字节内存。DOUBLE类型用于存储浮点数,最多存储18位十进制数,占用8字节内存。DOUBLE精度高,适用于更大范围和精度的数值需求。2. 字段为何定义为NOT NULL? NULL值占用额外空间记录是否为空,对MyISAM表,每个NULL列额外占用1位,向上取整到最近的字节。使用NOT NULL约束可节省存储空间,避免程序中空值问题,确保数据完整性。3. DROP、DELETE和TRUNCATE的使用场景:DROP删除整个表,DELETE与WHERE子句用于删除部分行,TRUNCATE清空表数据保留结构。4. 索引对查询性能影响:索引加快查询速度,但需额外存储空间和维护成本,可能降低插入、删除、更新速度。在查询结果小于表记录数30%或基于非唯一性索引的范围查询时,索引更有优势。5. 索引优化:主键查询快,聚簇索引包含所有数据。索引下推优化减少回表操作。覆盖索引避免回表查询,提升效率。联合索引高频字段应优先考虑。