问题描述
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 |
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 |
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\` >= 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\(<cache>\(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(*)
是唯一的问题,您可能不得不避免这样做。查询的复杂性使其难以优化。
你可以保持计数,但不要用这种技术等待它:
- 显示非 COUNT 项。
- 然后,使用 AJAX 进行 COUNT。它会异步返回;当它出现时,将计数放入页面上合适的位置。
(用户甚至可能不会注意到计数延迟;他们会忙于查看地图和图像。)
对于非 COUNT 查询,请提供 EXPLAIN FORMAT=JSON SELECT ...
。这或许可以说明为什么它没有更好地利用 SPATIAL 索引。