微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用空间数据查询速度慢,如何加快

如何解决使用空间数据查询速度慢,如何加快

我正在尝试使用空间数据加快查询速度。 (下面的简化查询

SELECT COUNT(*) FROM properties
    WHERE MBRCONTAINS(ST_MakeEnvelope(Point(33.497224314994114,-111.98568371835003),Point(33.43897750924284,-112.09826410537367)),pt);

运行解释给我以下内容

id 选择类型 分区 类型 possible_keys key_len 参考 过滤 额外
1 简单 属性 全部 260761 100 在哪里使用

我确实在定义为点的“pt”上添加了空间索引

我怎样才能加快这个查询的速度?这个大约需要 15 秒,并希望将其减少到 1 秒

编辑 该表包含房地产列表的数据。我们构建房地产应用程序。我们实施了地图搜索,通过从 Google Maps API 中提取边界框,我们希望显示该边界框中符合特定条件的列表。

create table properties
(
    id bigint unsigned auto_increment
        primary key,City varchar(50) null,ListAgentMlsId varchar(25) null,listofficeMlsId varchar(25) null,listofficeName varchar(255) null,ListPrice int null,ListingId varchar(255) null,ModificationTimestamp varchar(27) null,PropertyType varchar(50) null,StandardStatus varchar(25) null,StatusChangeTimestamp varchar(27) null,MemberStatus varchar(25) null,MemberModificationTimestamp varchar(27) null,OfficeModificationTimestamp varchar(27) null,OfficeStatus varchar(25) null,MediaOrder int null,ResourceRecordID varchar(255) null,OpenHouseListingId varchar(255) null,OpenHouseModificationTimestamp varchar(27) null,AccessibilityFeatures text null,Appliances text null,ArchitecturalStyle text null,AssociationAmenities text null,AssociationFee int null,AssociationFeeFrequency varchar(25) null,AssociationFeeIncludes text null,AssociationYN tinyint(1) null,AttachedGarageYN tinyint(1) null,Basement text null,BathroomsFull int null,BathroomsHalf int null,BathroomsOneQuarter int null,BathroomsPartial int null,BathroomsThreeQuarter int null,BathroomsTotalInteger int null,bedroomsTotal int null,BodyType text null,BusinessType text null,CarportSpaces int null,CoListAgentFirstName varchar(50) null,CoListAgentFullName varchar(150) null,CoListAgentLastName varchar(50) null,CoListAgentMlsId varchar(25) null,ColistofficeMlsId varchar(25) null,ColistofficeName varchar(255) null,ConstructionMaterials text null,Cooling text null,CoolingYN tinyint(1) null,CountyOrParish varchar(50) null,CurrentUse text null,DirectionFaces varchar(25) null,distancetoPhoneserviceNumeric int null,distancetoPhoneserviceUnits varchar(25) null,Electric text null,ExteriorFeatures text null,Fencing text null,FireplaceFeatures text null,FireplaceYN tinyint(1) null,FireplacesTotal int null,Flooring text null,FoundationDetails text null,GarageSpaces int null,GreenBuildingVerificationType text null,Heating text null,HeatingYN tinyint(1) null,InteriorFeatures text null,InternetAutomatedValuationdisplayYN tinyint(1) null,InternetConsumerCommentYN tinyint(1) null,InternetEntireListingdisplayYN tinyint(1) null,LaundryFeatures text null,Levels text null,ListAgentFirstName varchar(50) null,ListAgentFullName varchar(150) null,ListAgentLastName varchar(50) null,ListingKey varchar(255) null,ListingKeyNumeric int null,LivingAreaUnits varchar(25) null,LotFeatures text null,LotSizeAcres int null,LotSizeArea int null,LotSizeDimensions varchar(150) null,LotSizeSquareFeet int null,LotSizeUnits varchar(25) null,MLSAreaMajor varchar(255) null,MobileLength int null,MobileWidth int null,NewConstructionYN tinyint(1) null,NumberOfUnitsTotal int null,OriginatingSystemKey varchar(255) null,OriginatingSystemName varchar(255) null,ParcelNumber varchar(50) null,ParkName varchar(50) null,ParkingFeatures text null,PatioAndPorchFeatures text null,PhotosChangeTimestamp varchar(27) null,PhotosCount int null,PoolFeatures text null,PoolPrivateYN tinyint(1) null,PostalCode varchar(10) null,PostalCodePlus4 varchar(4) null,PropertyAttachedYN tinyint(1) null,PropertySubType varchar(50) null,PublicRemarks text null,RentIncludes text null,Roof text null,RoomType text null,RoomsTotal int null,SeniorCommunityYN tinyint(1) null,Sewer text null,Skirt text null,SpaFeatures text null,StateOrProvince varchar(2) null,Stories int null,StoriesTotal int null,SubdivisionName varchar(50) null,Topography varchar(255) null,UnitTypeType text null,UniversalPropertyId varchar(128) null,Utilities text null,View text null,VirtualTourURLUnbranded text null,WaterBodyName varchar(50) null,WaterSource text null,WindowFeatures text null,YearBuilt int null,Zoning varchar(25) null,MemberFirstName varchar(50) null,MemberFullName varchar(150) null,MemberKey varchar(255) null,MemberKeyNumeric int null,MemberLastName varchar(50) null,MemberMiddleName varchar(50) null,MemberNameSuffix varchar(10) null,MemberNickname varchar(50) null,MemberStateLicense varchar(50) null,MemberStateLicenseState varchar(2) null,MemberOfficeKey varchar(255) null,MemberOfficeKeyNumeric int null,MemberOfficeMlsId varchar(25) null,MemberOfficeName varchar(255) null,MemberOriginatingSystemID varchar(25) null,OriginatingSystemMemberKey varchar(255) null,SourceSystemMemberKey varchar(255) null,IDXOfficeParticipationYN tinyint(1) null,MainOfficeKey varchar(255) null,MainOfficeKeyNumeric int null,MainOfficeMlsId varchar(25) null,OfficeAddress1 varchar(50) null,OfficeAddress2 varchar(50) null,OfficebrokerKey varchar(255) null,OfficebrokerKeyNumeric int null,OfficeCity varchar(50) null,OfficeKey varchar(255) null,OfficeKeyNumeric int null,OfficeMlsId varchar(25) null,OfficeName varchar(255) null,OfficePhone varchar(16) null,OfficePostalCode varchar(10) null,OfficePostalCodePlus4 varchar(4) null,OfficeStateOrProvince varchar(2) null,OfficeOriginatingSystemID varchar(25) null,OfficeOriginatingSystemName varchar(255) null,OriginatingSystemOfficeKey varchar(255) null,SourceSystemID varchar(25) null,SourceSystemName varchar(255) null,SourceSystemOfficeKey varchar(255) null,ImageHeight int null,ImageOf varchar(50) null,ImageSizeDescription varchar(50) null,ImageWidth int null,MediaCategory varchar(50) null,MediaKey varchar(255) null,MediaKeyNumeric int null,MediaMediaModificationTimestamp varchar(27) null,MediaStatus varchar(50) null,MediaURL text null,MediaModificationTimestamp varchar(27) null,MediaOriginatingSystemID varchar(25) null,OriginatingSystemMediaKey varchar(255) null,ResourceName varchar(50) null,ResourceRecordKey varchar(255) null,ResourceRecordKeyNumeric int null,MediaSourceSystemID varchar(255) null,SourceSystemMediaKey varchar(255) null,OpenHouseListingKey varchar(255) null,OpenHouseListingKeyNumeric int null,OpenHouseDate date null,OpenHouseEndTime varchar(27) null,OpenHouseKey varchar(255) null,OpenHouseKeyNumeric int null,OpenHouseRemarks text null,OpenHouseStartTime varchar(27) null,OpenHouseStatus varchar(25) null,OpenHouseType varchar(25) null,OriginalEntryTimestamp varchar(27) null,OpenHouSEOriginatingSystemID varchar(25) null,OpenHouSEOriginatingSystemKey varchar(255) null,Refreshments varchar(255) null,ShowingAgentKey varchar(255) null,ShowingAgentKeyNumeric int null,OpenHouseSourceSystemID varchar(25) null,OpenHouseSourceSystemKey varchar(255) null,BuyerAgentFirstName varchar(50) null,BuyerAgentFullName varchar(150) null,BuyerAgentLastName varchar(50) null,BuyerAgentMlsId varchar(25) null,BuyerOfficeMlsId varchar(25) null,BuyerOfficeName varchar(255) null,CloseDate date null,ClosePrice int null,CoBuyerAgentFirstName varchar(50) null,CoBuyerAgentFullName varchar(150) null,CoBuyerAgentLastName varchar(50) null,CoBuyerAgentMlsId varchar(25) null,CoBuyerOfficeMlsId varchar(25) null,CoBuyerOfficeName varchar(255) null,Directions varchar(255) null,ElementarySchool varchar(50) null,ElementarySchooldistrict varchar(50) null,HighSchool varchar(50) null,HighSchooldistrict varchar(50) null,InternetAddressdisplayYN tinyint(1) null,LivingArea int null,LivingAreaSource varchar(50) null,MiddleOrJuniorSchool varchar(50) null,MiddleOrJuniorSchooldistrict varchar(50) null,Mlsstatus varchar(50) null,OnMarketDate date null,Possibleuse text null,PriceChangeTimestamp varchar(27) null,SpecialListingConditions text null,StreetDirPrefix varchar(15) null,StreetDirsuffix varchar(15) null,StreetName varchar(50) null,StreetNumber varchar(25) null,StreetNumberNumeric int null,StreetSuffix varchar(25) null,StreetSuffixModifier varchar(25) null,TaxAnnualAmount int null,UnitNumber varchar(25) null,UnparsedAddress varchar(255) null,WaterfrontYN tinyint(1) null,MemberEmail varchar(80) null,MemberLoginId varchar(25) null,MembermlsId varchar(25) null,MemberPreferredPhone varchar(16) null,MemberPreferredPhoneExt varchar(10) null,ListingContractDate date null,created_at timestamp null,updated_at timestamp null,picturesDownloaded tinyint(1) default 0 null,PermitAddressInternetYN tinyint(1) null,PermitInternetYN tinyint(1) null,InternetExposure varchar(50) null,uniqueKey varchar(50) null,geocoded int default 0 null,latitude float(10,6) default 0.000000 null,longtitude float(10,pt point not null,ListAgentStateLicense varchar(50) null,CoListAgentStateLicense varchar(50) null,BuyerAgentStateLicense varchar(50) null,CoBuyerAgentStateLicense varchar(50) null,constraint properties__Search
        unique (ListPrice desc,ListingId,PropertySubType,MLSAreaMajor,StandardStatus,LotSizeSquareFeet desc,bedroomsTotal,BathroomsTotalInteger,ListAgentMlsId,InternetEntireListingdisplayYN,picturesDownloaded)
)
collate=utf8mb4_unicode_ci;

create index properties_AgentMLSID
    on properties (ListAgentMlsId);

create index properties__ListingID
    on properties (ListingId);

create index properties__PostalCode
    on properties (PostalCode);

create spatial index properties__pt
    on properties (pt);

在没有空间方面的情况下,在这个表上运行查询会很快。我们有大约 280000 条记录。这只是一个小版本。对于具有相同表的另一个客户端,我们有 4.000.000 条记录。

编辑 2 :)

添加更多上下文。我使用 MysqL 8.0.20 并在搜索页面上运行 2 个查询https://grantvandyke.com/map/ 作为示例

一个是检索结果数量以建立找到的列表

SELECT COUNT(*) FROM properties
    WHERE ListPrice >= 300000 AND MBRCONTAINS(ST_MakeEnvelope(Point(33.497224314994114,pt)
    AND PicturesDownloaded = 1 AND InternetEntireListingdisplayYN = 1;
id select_type 表格 分区 输入 possible_keys key key_len ref 过滤 额外
1 简单 属性 NULL 全部 properties__Search NULL NULL NULL 253000 0.5 使用 where

页面上的第二个查询获取列表本身,限制为 60

SELECT
p.City,p.ListPrice,p.ListingId,p.BathroomsFull,p.BathroomsTotalInteger,p.bedroomsTotal,p.LotSizeSquareFeet,p.LotSizeUnits,p.PostalCode,p.StateOrProvince,p.StreetDirPrefix,p.StreetDirsuffix,p.StreetName,p.StreetNumber,p.StreetSuffix,p.StreetSuffixModifier,p.StandardStatus,p.latitude,p.longtitude,(SELECT GROUP_CONCAT(storedUrl) FROM images I
    WHERE i.ListingId = p.ListingId) AS imgurl
FROM properties p WHERE p.ListPrice >= 300000
      AND ST_Contains(ST_MakeEnvelope(Point(33.497224314994114,p.pt)
      AND p.PicturesDownloaded = 1
      AND p.InternetEntireListingdisplayYN = 1
    ORDER BY p.ListPrice DESC LIMIT 0,60;
id select_type 表格 分区 输入 possible_keys key key_len ref 过滤 额外
1 PRIMARY p NULL 范围 properties__Search properties__Search 5 NULL 126500 1 使用索引条件;使用 where
2 依赖子查询 i NULL ref images__listingID images__listingID 1023 rc-armls.p.ListingId 27 100 NULL

我的代码将其转换为 JSON 以在页面站点中使用:

0   
TotalResults    "14951"
1   
0   
City    "ScottsDale"
ListPrice   "11000000"
ListingId   "6157504"
BathroomsTotalInteger   "7"
bedroomsTotal   "6"
LotSizeSquareFeet   "1159972"
LotSizeUnits    null
PostalCode  "85266"
StateOrProvince "AZ"
StreetDirPrefix "E"
StreetDirsuffix ""
StreetName  "DIXILETA"
StreetNumber    "8291"
StreetSuffix    "Drive"
StreetSuffixModifier    null
picture "listing-for-sale/6157504/8291-E-E-DIXILETA-Drive-ScottsDale-AZ-85266-1.jpg"
StandardStatus  "Active"
1   
City    "ScottsDale"
ListPrice   "10995000"
ListingId   "6150750"
BathroomsTotalInteger   "8"
bedroomsTotal   "6"
LotSizeSquareFeet   "74867"
LotSizeUnits    null
PostalCode  "85255"
StateOrProvince "AZ"
StreetDirPrefix "E"
StreetDirsuffix ""
StreetName  "SAGUARO CANYON"
StreetNumber    "11007"
StreetSuffix    "Trail"
StreetSuffixModifier    null
picture "listing-for-sale/6150750/11007-E-E-SAGUARO-CANYON-Trail-ScottsDale-AZ-85255-1.jpg"
StandardStatus  "Active"
2   
City    "ScottsDale"
ListPrice   "10850000"
ListingId   "6156863"
BathroomsTotalInteger   "9"
bedroomsTotal   "6"
LotSizeSquareFeet   "44135"
LotSizeUnits    null
PostalCode  "85262"
StateOrProvince "AZ"
StreetDirPrefix "N"
StreetDirsuffix ""
StreetName  "101st"
StreetNumber    "41917"
StreetSuffix    "Place"
StreetSuffixModifier    null
picture "listing-for-sale/6156863/41917-N-N-101st-Place-ScottsDale-AZ-85262-1.jpg"
StandardStatus  "Active"
3   
City    "ScottsDale"
ListPrice   "10500000"
ListingId   "6211048"
BathroomsTotalInteger   "7"
bedroomsTotal   "5"
LotSizeSquareFeet   "130592"
LotSizeUnits    null
PostalCode  "85255"
StateOrProvince "AZ"
StreetDirPrefix "N"
StreetDirsuffix ""
StreetName  "104TH"
StreetNumber    "20981"
StreetSuffix    "Way"
StreetSuffixModifier    null
picture "listing-for-sale/6211048/20981-N-N-104TH-Way-ScottsDale-AZ-85255-1.jpg"
StandardStatus  "Active"
4   
City    "Paradise Valley"
ListPrice   "10000000"
ListingId   "6148731"
BathroomsTotalInteger   "9"
bedroomsTotal   "8"
LotSizeSquareFeet   "155673"
LotSizeUnits    null
PostalCode  "85253"
StateOrProvince "AZ"
StreetDirPrefix "N"
StreetDirsuffix ""
StreetName  "Palo Cristi"
StreetNumber    "5837"
StreetSuffix    "Road"
StreetSuffixModifier    null
picture "listing-for-sale/6148731/5837-N-N-Palo-Cristi-Road-Paradise-Valley-AZ-85253-1.jpg"
StandardStatus  "Active"
5   
City    "ScottsDale"
ListPrice   "10000000"
ListingId   "6201670"
BathroomsTotalInteger   "5"
bedroomsTotal   "3"
LotSizeSquareFeet   "59240"
LotSizeUnits    null
PostalCode  "85262"
StateOrProvince "AZ"
StreetDirPrefix "E"
StreetDirsuffix ""
StreetName  "RELIC ROCK"
StreetNumber    "10016"
StreetSuffix    "Road"
StreetSuffixModifier    null
picture "listing-for-sale/6201670/10016-E-E-RELIC-ROCK-Road-ScottsDale-AZ-85262-1.jpg"
StandardStatus  "Active"
6   
City    "ScottsDale"
ListPrice   "9995000"
ListingId   "5891291"
BathroomsTotalInteger   "6"
bedroomsTotal   "4"
LotSizeSquareFeet   "135531"
LotSizeUnits    null
PostalCode  "85262"
StateOrProvince "AZ"
StreetDirPrefix "E"
StreetDirsuffix ""
StreetName  "CinTarosa"
StreetNumber    "9661"
StreetSuffix    "Pass"
StreetSuffixModifier    null
picture "listing-for-sale/5891291/9661-E-E-CinTarosa-Pass-ScottsDale-AZ-85262-1.jpg"
StandardStatus  "Active"
7   
City    "ScottsDale"
ListPrice   "9750000"
ListingId   "6028659"
BathroomsTotalInteger   "6"
bedroomsTotal   "5"
LotSizeSquareFeet   "100545"
LotSizeUnits    null
PostalCode  "85262"
StateOrProvince "AZ"
StreetDirPrefix "E"
StreetDirsuffix ""
StreetName  "GRAPEVINE PASS"
StreetNumber    "9300"
StreetSuffix    "Road"
StreetSuffixModifier    null
picture "listing-for-sale/6028659/9300-E-E-GRAPEVINE-PASS-Road-ScottsDale-AZ-85262-1.jpg"
StandardStatus  "Pending"
8   
City    "ScottsDale"
ListPrice   "9750000"
ListingId   "6178366"
BathroomsTotalInteger   "8"
bedroomsTotal   "6"
LotSizeSquareFeet   "406939"
LotSizeUnits    null
PostalCode  "85255"
StateOrProvince "AZ"
StreetDirPrefix "E"
StreetDirsuffix ""
StreetName  "RIMROCK"
StreetNumber    "10731"
StreetSuffix    "Drive"
StreetSuffixModifier    null
picture "listing-for-sale/6178366/10731-E-E-RIMROCK-Drive-ScottsDale-AZ-85255-1.jpg"
StandardStatus  "Pending"
9   
City    "ScottsDale"
ListPrice   "9749900"
ListingId   "6023236"
BathroomsTotalInteger   "8"
bedroomsTotal   "5"
LotSizeSquareFeet   "92218"
LotSizeUnits    null
PostalCode  "85255"
StateOrProvince "AZ"
StreetDirPrefix "N"
StreetDirsuffix ""
StreetName  "110TH"
StreetNumber    "21297"
StreetSuffix    "Way"
StreetSuffixModifier    null
picture "listing-for-sale/6023236/21297-N-N-110TH-Way-ScottsDale-AZ-85255-1.jpg"
StandardStatus  "Active"
10  
City    "ScottsDale"
ListPrice   "9500000"
ListingId   "5999488"
BathroomsTotalInteger   "8"
bedroomsTotal   "5"
LotSizeSquareFeet   "60133"
LotSizeUnits    null
PostalCode  "85255"
StateOrProvince "AZ"
StreetDirPrefix "E"
StreetDirsuffix ""
StreetName  "Mountain Spring"
StreetNumber    "10835"
StreetSuffix    "Road"
StreetSuffixModifier    null
picture "listing-for-sale/5999488/10835-E-E-Mountain-Spring-Road-ScottsDale-AZ-85255-1.jpg"
StandardStatus  "Active"
11  
City    "ScottsDale"
ListPrice   "8999000"
ListingId   "6163378"
BathroomsTotalInteger   "8"
bedroomsTotal   "5"
LotSizeSquareFeet   "60133"
LotSizeUnits    null
PostalCode  "85255"
StateOrProvince "AZ"
StreetDirPrefix "E"
StreetDirsuffix ""
StreetName  "Mountain Spring"
StreetNumber    "10835"
StreetSuffix    "Road"
StreetSuffixModifier    null
picture "listing-for-sale/6163378/10835-E-E-Mountain-Spring-Road-ScottsDale-AZ-85255-1.jpg"
StandardStatus  "Active"
12  
City    "ScottsDale"
ListPrice   "8997009"
ListingId   "5918202"
BathroomsTotalInteger   "5"
bedroomsTotal   "4"
LotSizeSquareFeet   "43621"
LotSizeUnits    null
PostalCode  "85262"
StateOrProvince "AZ"
StreetDirPrefix "N"
StreetDirsuffix ""
StreetName  "99TH"
StreetNumber    "41796"
StreetSuffix    "Way"
StreetSuffixModifier    null
picture "listing-for-sale/5918202/41796-N-N-99TH-Way-ScottsDale-AZ-85262-1.jpg"
StandardStatus  "Active"
13  
City    "Phoenix"
ListPrice   "8995000"
ListingId   "6035704"
BathroomsTotalInteger   "14"
bedroomsTotal   "6"
LotSizeSquareFeet   "71343"
LotSizeUnits    null
PostalCode  "85018"
StateOrProvince "AZ"
StreetDirPrefix "N"
StreetDirsuffix ""
StreetName  "ARCADIA"
StreetNumber    "4415"
StreetSuffix    "Lane"
StreetSuffixModifier    null
picture "listing-for-sale/6035704/4415-N-N-ARCADIA-Lane-Phoenix-AZ-85018-1.jpg"
StandardStatus  "Pending"
14  
City    "Phoenix"
ListPrice   "8900000"
ListingId   "6205114"
BathroomsTotalInteger   "7"
bedroomsTotal   "6"
LotSizeSquareFeet   "45868"
LotSizeUnits    null
PostalCode  "85016"
StateOrProvince "AZ"
StreetDirPrefix "E"
StreetDirsuffix ""
StreetName  "BILTMORE"
StreetNumber    "42"
StreetSuffix    "Estate"
StreetSuffixModifier    null
picture "listing-for-sale/6205114/42-E-E-BILTMORE-Estate-Phoenix-AZ-85016-1.jpg"
StandardStatus  "Active"

添加说明

    | EXPLAIN |
| :--- |
| {<br/>  "query\_block": {<br/>    "select\_id": 1,<br/>    "cost\_info": {<br/>      "query\_cost": "60947.00"<br/>    },<br/>    "ordering\_operation": {<br/>      "using\_filesort": false,<br/>      "table": {<br/>        "table\_name": "p",<br/>        "access\_type": "range",<br/>        "possible\_keys": \[<br/>          "properties\_\_Search"<br/>        \],<br/>        "key": "properties\_\_Search",<br/>        "used\_key\_parts": \[<br/>          "ListPrice"<br/>        \],<br/>        "key\_length": "5",<br/>        "rows\_examined\_per\_scan": 126500,<br/>        "rows\_produced\_per\_join": 1265,<br/>        "filtered": "1.00",<br/>        "index\_condition": "\(\(\`rc-armls\`.\`p\`.\`InternetEntireListingdisplayYN\` = 1\) and \(\`rc-armls\`.\`p\`.\`picturesDownloaded\` = 1\) and \(\`rc-armls\`.\`p\`.\`ListPrice\` &gt;= 300000\)\)",<br/>        "cost\_info": {<br/>          "read\_cost": "60820.50",<br/>          "eval\_cost": "126.50",<br/>          "prefix\_cost": "60947.00",<br/>          "data\_read\_per\_join": "70M"<br/>        },<br/>        "used\_columns": \[<br/>          "id",<br/>          "City",<br/>          "ListPrice",<br/>          "ListingId",<br/>          "StandardStatus",<br/>          "BathroomsFull",<br/>          "BathroomsTotalInteger",<br/>          "bedroomsTotal",<br/>          "InternetEntireListingdisplayYN",<br/>          "LotSizeSquareFeet",<br/>          "LotSizeUnits",<br/>          "PostalCode",<br/>          "StateOrProvince",<br/>          "StreetDirPrefix",<br/>          "StreetDirsuffix",<br/>          "StreetName",<br/>          "StreetNumber",<br/>          "StreetSuffix",<br/>          "StreetSuffixModifier",<br/>          "picturesDownloaded",<br/>          "latitude",<br/>          "longtitude",<br/>          "pt"<br/>        \],<br/>        "attached\_condition": "st\_contains\(&lt;cache&gt;\(st\_makeenvelope\(point\(33.497224314994114,-\(111.98568371835003\)\),point\(33.43897750924284,-\(112.09826410537367\)\)\)\),\`rc-armls\`.\`p\`.\`pt\`\)"<br/>      },<br/>      "select\_list\_subqueries": \[<br/>        {<br/>          "dependent": true,<br/>          "cacheable": false,<br/>          "query\_block": {<br/>            "select\_id": 2,<br/>            "cost\_info": {<br/>              "query\_cost": "31.66"<br/>            },<br/>            "table": {<br/>              "table\_name": "i",<br/>              "access\_type": "ref",<br/>              "possible\_keys": \[<br/>                "images\_\_listingID"<br/>              \],<br/>              "key": "images\_\_listingID",<br/>              "used\_key\_parts": \[<br/>                "ListingId"<br/>              \],<br/>              "key\_length": "1023",<br/>              "ref": \[<br/>                "rc-armls.p.ListingId"<br/>              \],<br/>              "rows\_examined\_per\_scan": 28,<br/>              "rows\_produced\_per\_join": 28,<br/>              "filtered": "100.00",<br/>              "cost\_info": {<br/>                "read\_cost": "28.78",<br/>                "eval\_cost": "2.88",<br/>                "prefix\_cost": "31.66",<br/>                "data\_read\_per\_join": "35K"<br/>              },<br/>              "used\_columns": \[<br/>                "ListingId",<br/>                "storedUrl"<br/>              \]<br/>            }<br/>          }<br/>        }<br/>      \]<br/>    }<br/>  }<br/>} |

解决方法

如果 COUNT(*) 是唯一的问题,您可能不得不避免这样做。查询的复杂性使其难以优化。

你可以保持计数,但不要用这种技术等待它:

  1. 显示非 COUNT 项。
  2. 然后,使用 AJAX 进行 COUNT。它会异步返回;当它出现时,将计数放入页面上合适的位置。

(用户甚至可能不会注意到计数延迟;他们会忙于查看地图和图像。)

对于非 COUNT 查询,请提供 EXPLAIN FORMAT=JSON SELECT ...。这或许可以说明为什么它没有更好地利用 SPATIAL 索引。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。