Hi Pat,
Here is the sql_query:
sql_query = SELECT SQL_NO_CACHE `businesses`.`id` * 1 + 0 AS `id` ,
CAST(`businesses`.`name` AS CHAR) AS `name`, CAST(GROUP_CONCAT
(DISTINCT IFNULL(`cs_categories`.`name`, '0') SEPARATOR ' ') AS CHAR)
AS `category_names`, CAST(CONCAT_WS(' ', `city`.`city`,
`city`.`state_code`) AS CHAR) AS `city`, `businesses`.`id` AS
`sphinx_internal_id`,
4054125678 AS `class_crc`, '
4054125678' AS
`subclass_crcs`, 0 AS `sphinx_deleted`, IFNULL(`businesses`.`name`,
'') AS `name_sort`, GROUP_CONCAT(DISTINCT IFNULL(IFNULL
(`cs_categories`.`name`, ''), '0') SEPARATOR ' ') AS
`category_names_sort`, CONCAT_WS(' ', IFNULL(`city`.`city`, ''), IFNULL
(`city`.`state_code`, '')) AS `city_sort`, `businesses`.`lat` AS
`lat`, `businesses`.`lon` AS `lon` FROM `businesses` LEFT OUTER
JOIN `categorizations` ON (`businesses`.`id` =
`categorizations`.`business_id`) LEFT OUTER JOIN `cs_categories` ON
(`cs_categories`.`id` = `categorizations`.`cs_category_id`) LEFT
OUTER JOIN `city` ON `city`.city_id = `businesses`.city_id WHERE
`businesses`.`id` >= $start AND `businesses`.`id` <= $end GROUP BY
`businesses`.`id` ORDER BY NULL
sql_query_range = SELECT IFNULL(MIN(`id`), 1), IFNULL(MAX(`id`), 1)
FROM `businesses`
We turned on logging for every query in mysqld to troubleshoot this.
This is the last query run:
SELECT SQL_NO_CACHE `businesses`.`id` * 1 + 0 AS `id` , CAST
(`businesses`.`name` AS CHAR) AS `name`, CAST(GROUP
_CONCAT(DISTINCT IFNULL(`cs_categories`.`name`, '0') SEPARATOR ' ') AS
CHAR) AS `category_names`, CAST(CONCAT_WS(' ', `city`.`city`,
`city`.`state_code`) AS CHAR) AS `city`, `businesses`.`id` AS
`sphinx_internal_id`,
4054125678 AS `class_crc`, '
4054125678' AS
`subclass_crcs`, 0 AS `sphinx_deleted`, IFNULL(`businesses`.`name`,
'') AS `name_sort`, GROUP_CONCAT(DISTINCT IFNULL(IFNULL
(`cs_categories`.`name`, ''), '0') SEPARATOR ' ') AS
`category_names_sort`, CONCAT_WS(' ', IFNULL(`city`.`city`, ''), IFNULL
(`city`.`state_code`, '')) AS `city_sort`, `businesses`.`lat` AS
`lat`, `businesses`.`lon` AS `lon` FROM `businesses` LEFT OUTER
JOIN `categorizations` ON (`businesses`.`id` =
`categorizations`.`business_id`) LEFT OUTER JOIN `cs_categories` ON
(`cs_categories`.`id` = `categorizations`.`cs_category_id`) LEFT
OUTER JOIN `city` ON `city`.city_id = `businesses`.city_id WHERE
`businesses`.`id` >=
2365000001 AND `businesses`.`id` <=
2365744349
GROUP BY `businesses`.`id` ORDER BY NULL
Which returns zero rows. In fact, the last 15+ queries return zero
rows. The businesses table has no records with ids
2034010806...2500480805. And of course, the maximum id is
15250646237. We need *all* the rows indexed, of course... :)
So should we be increasing the step_size to like 10 million?
-Steve