织梦物流公司网站模板简洁大气app网站建站系统
2026/4/6 4:01:30 网站建设 项目流程
织梦物流公司网站模板简洁大气,app网站建站系统,微动漫怎么制作,知名男艺人工作室索引介绍 索引是数据库中的一种快速查询数据的方法。索引中记录了表中的一列或多列值与其物理位置之间的对应关系#xff0c;就好比是一本书前面的目录#xff0c;通过目录中页码就能快速定位到我们需要查询的内容。 索引的代价 增加了数据库的存储空间在插入和修改数据时要花…索引介绍索引是数据库中的一种快速查询数据的方法。索引中记录了表中的一列或多列值与其物理位置之间的对应关系就好比是一本书前面的目录通过目录中页码就能快速定位到我们需要查询的内容。索引的代价增加了数据库的存储空间在插入和修改数据时要花费较多的时间因为索引也要随之更新索引其他用途除了加快查询以外比如唯一索引还可以起到唯一约束的作用。索引的分类BTree最常用的索引适合用于处理等值查询和范围查询。HASH只能处理简单的等值查询。GiST不是单独一种索引类型而是一种架构可以在这种架构上实现很多不同的索引策略。SP-GiST即空间分区 GiST 索引PostgreSQL 9.2 引入。GIN反转索引可以处理包含多个键的值。创建索引案例表结构CREATETABLEcontacts(idintPRIMARYKEY,namevarchar(40),phonevarchar(32)[],addresstext);1. 简单 BTree 索引为了实现按姓名name快速查询可以在字段name上建一个 BTree 索引CREATEINDEXidx_contacts_nameONcontacts(name);2. GIN 索引用于数组字段如果想按电话号码phone字段做快速查询例如查询某个电话号码是谁的由于此字段是一个数组BTree 索引不再适用可以建一个 GIN 索引CREATEINDEXidx_contacts_phoneONcontactsUSINGgin(phone);查询示例SELECT*FROMcontactsWHEREphone ARRAY[13422334455::varchar(32)];解释是数组操作符表示“包含”的意思GIN 索引能在上起作用。创建索引时带参数CREATEINDEXidx_contacts_nameONcontacts(name)WITH(FILLFACTOR50);按降序创建索引CREATEINDEXidx_contacts_nameONcontacts(nameDESC);指定空值排序-- 空值排在非空值前面CREATEINDEXidx_contacts_nameONcontacts(nameDESCNULLSFIRST);-- 空值排在非空值后面CREATEINDEXidx_contacts_nameONcontacts(nameDESCNULLSLAST);并发创建索引默认方式的问题默认情况下创建索引时会锁定表以防止写入然后对表做全表扫描。在此过程中其他用户可以读取表插入、更新、删除等操作将一直被阻塞直到索引创建完毕示例CREATETABLEtesttab01(idintPRIMARYKEY,noteint);INSERTINTOtesttab01SELECTgenerate_series(1,5000000),generate_series(1,5000000);在一个窗口中创建索引CREATEINDEXidx_testtab01_noteONtesttab01(note);在另一个窗口中执行删除操作将被阻塞DELETEFROMtesttab01WHEREid1;使用CONCURRENTLY选项创建索引这种方式不会长时间阻塞 DML 操作但耗时更长因为需要两次扫描表。示例DROPINDEXIFEXISTSidx_testtab01_note;CREATEINDEXCONCURRENTLY idx_testtab01_noteONtesttab01(note);另一个窗口的删除语句可以正常执行DELETEFROMtesttab01WHEREid2;DELETEFROMtesttab01WHEREid3;并发创建索引的“坑”如果在并发创建索引过程中取消操作可能会导致索引残留状态为INVALID。处理方法-- 查看表结构确认无效索引\d testtab01-- 手动删除无效索引DROPINDEXidx_testtab01_note;修改索引重命名索引ALTERINDEXidx_contacts_nameRENAMETOidx_contacts_name_old;移动索引到指定表空间ALTERINDEXidx_contacts_name_oldSETTABLESPACEtbs_data01;修改填充因子ALTERINDEXidx_contacts_name_oldSET(fillfactor75);查看索引信息\didx_contacts_name_old删除索引安全删除存在才删除DROPINDEXIFEXISTSidx_contacts_name_old;默认RESTRICT行为如果有对象依赖该索引删除会失败。示例CREATETABLEclass(class_noint,class_namevarchar(40));CREATEUNIQUEINDEXindex_unique_class_noONclass(class_no);CREATETABLEstudent(student_nointPRIMARYKEY,student_namevarchar(40),ageint,class_nointREFERENCESclass(class_no));-- 删除索引会失败因为有外键依赖DROPINDEXindex_unique_class_no;使用CASCADE强制删除DROPINDEXindex_unique_class_noCASCADE;注意使用CASCADE会同时删除依赖该索引的外键约束。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询